メモのコツを教えてください!

こんばんわ。
教えて頂きたいのですが、以下のjspを記述しましたが番号・名前・電話番号の項目表示のみで肝心のテーブル内容が表示されません。

何が原因かわからず困っています。
教えて下さい!お願い致します。

<%@page contentType="text/html; charset=Shift_JIS" pageEncoding="Shift_JIS"%>
<%@page import="java.sql.*"%>
<%!
// サーブレットのinitメソッドに相当
public void jspInit() {
try {
// JDBCドライバをロード
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (Exception e) {
e.printStackTrace();
}
}
%>

<html>
<head><title>テーブル_JSP版</title></head>

<body>
<P>データベース一覧</P>
<table border='1'><tr><th>番号</th><th>名前</th><th>電話番号</th></tr>

<%
// データベースへのアクセス開始
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
// データベースに接続するConnectionオブジェクトの取得
con = DriverManager.getConnection("jdbc:sqlserver://localhost;DatabaseName=Name","ID","PW");
// データベース操作を行うためのStatementオブジェクトの取得
stmt = con.createStatement();
// SQL()を実行して、結果を得る
rs = stmt.executeQuery(
"SELECT 番号, 名前, 電話番号 FROM Table");

// 得られた結果をレコードごとに表示
while (rs.next()) {
%>
<tr>
<%-- レコードのCUSTOMER_NUMフィールドを表示 --%>
<td><%= rs.getString("番号")%></td>
<%-- レコードのNAMEフィールドを表示 --%>
<td><%= rs.getString("名前")%></td>
<%-- レコードのPHONEフィールドを表示 --%>
<td><%= rs.getString("電話番号")%></td>
</tr>
<%
}

} catch (Exception e) {
e.printStackTrace();
} finally {
// データベースとの接続をクローズ
try { rs.close(); } catch (Exception e) {}
try { stmt.close(); } catch (Exception e) {}
try { con.close(); } catch (Exception e) {}
}
%>

</table>
</body>
</html>

A 回答 (12件中11~12件)

No.1です



SELECT * FROM テーブル名
だとしてもWHERE句が無い以上、当該テーブルの全レコードを取得するはずです。
なので、そもそもテーブル上にレコードがあるのか疑問です。

もし、レコードが1件以上取得できていることの確認をプログラム上で取りたいのであれば、
while (rs.next()) のループ内にたどり着いていることを確認することです。
例えばwhileの下の行に「System.out.println("ループの中に入ったよ!");」とかで。
まぁ、今のままでもループ内の<tr>タグなどが出力されているかで確認は取れますが。
ループ内に一度もたどり着いていないのであればレコード取得件数は0件です。

ループ内にたどり着いている場合、rs.getString(列名)で取得している
列の値がNULL(ブランク文字)だと思われます。

どちらにせよ、一度SQLServerの当該テーブルを
クエリアナライザなどで確認した方が良いでしょう。

この回答への補足

ARIA9さま

ありがとうございます☆
クエリアナライザですか・・・

初めて聞いた名前なので一度調べてやってみます。

もう1点ご教授頂きたいのですが、これはODBCを通じて直接SQLServerへ見に行っているのでしょうか?

mdbのアプリケーションパスを指定する必要はないのでしょうか?
xml等

度々申し訳ありませんがお願い致します。

補足日時:2007/04/12 12:58
    • good
    • 0

ぱっと見、問題なさそうですが。


1.例外が発生していないこと
 →もし発生しているならスタックトレースから原因がわかります。

2.直接SQLServerへ接続してプログラムで発行しているSQLを投げたときにレコードが取得できていること
 →そもそもレコードが取得できていないといったことはありませんか。

この回答への補足

ARAIA9さま

ありがとうございます。
例外は発生していない様です。

勉強不足で恐縮なのですが、レコードが取得の有無は確認できるのでしょうか?

SQL構文をSELECT * FROM テーブル名に変えても結果は同じでした。
よろしくお願い致します。

補足日時:2007/04/12 10:50
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!