SQLベースのデータベースアクセスプログラムをデバッグする手順

ステップ1:まずプログラムで実行するSQLが正しいか検査する

 

・SQLファイルで「テキストを選択して実行」を実行する。

INSERT INTO BBS_TBL (MSG) VALUES (‘ONE);

 

結果をしっかり確認する。成功するまでSQL文を修正する。

 

■エラー(例)

 

■成功(例)

 

上記の成功は「SQL文に構文エラーがない」というだけ。意図した実行結果が得られるか確認する。例えば、上記のINSERT文の実行結果は「ONE」という1行追加されていることだからSELECTしてみれば良い、と考える。

 

・SQLファイルで「テキストを選択して実行」を実行する。

SELECT * FROM BBS_TBL;

 

結果をしっかり確認する。例えば、上記の例であればINSERTしたのでそのデータがBBS_TBLに追加されていることが確認できればよい。

 

 

ステップ2:ステップ1が確認できてはじめてJSPのプログラム作りに入る。

 

「先生、動きません」という前に作成したプロジェクトやJSPプログラムについて自分で以下をチェックすること。

 

■環境チェック

・動的Webプロジェクトを作成したか?

・動的WebプロジェクトのWEB-INF/lib以下にderbyclient.jarを追加したか?

・データベースサーバーは起動済みか?

 

■プログラムチェック

・@pageにjava.util.*, java.sql.*を追加したか?

・prop.put中のユーザ名とパスワードは自分のmydbに設定した値とあっているか?

・ステップ1をやっているなら問題ないはずだがSQL文をプログラムで合成(String変数を結合)している場合は、SQL文は表示してみないとわからない。以下のプログラムでString sqlという変数があるが、これをout.print(sql)などとしてSQL文が本当に正しいか確認してみる。目で見て確認する自信がないなら、out.printで表示したSQL文をコピー&ペーストして上記のステップ1で確認してみる。急がば回れである。

 

<%

Class.forName(“org.apache.derby.jdbc.EmbeddedDriver”).newInstance();

Properties prop = new Properties();

prop.put(“user”, “ユーザ名”);

prop.put(“password”, “パスワード”);

Connection con = DriverManager.getConnection(“jdbc:derby:H:\\DerbyDatabases\\mydb”,prop);

con.setAutoCommit(true);

String sql = “SELECT * FROM BBS_TBL ORDER BY ID DESC”;

Statement stmt = con.createStatement();

ResultSet rest = stmt.executeQuery(sql);

while(rest.next())

{

int id = rest.getInt (“ID”);

String MSG = rest.getString(“MSG”);

out.print(“ID:”+id+”&nbsp;MSG:”+MSG+”<br>”);

}

stmt.close();

con.close();

%>