- - PR -
ResultSet.nextはコールされませんでした。というエラーが出ます。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-04-25 17:33
お世話になってます。
javaで、 //定数、変数定義 private PreparedStatement psSelDB1_; psSelDB1_ = null; private String aaa_; //省略 /*DB1から条件に合う全項目を取得*/ sb = new StringBuffer(); sb.append("SELECT * FROM DB1 WHERE 値段 = '" + nedan_ + "' AND 名前 = ? AND name = ? "); psSelDB1_ = con_.prepareStatement(sb.toString()); //省略 ResultSet rs = null; if(rs.next()){ // DB1取得 rs = psSelDB1_.executeQuery(); // DB1の項目を変数にセット aaa_ = rs.getString("aaa"); DB1から条件に合う全項目を取得し、各項目を定義した変数に格納し、insert文で使用したいと思っています。 DB1の項目を変数にセットの部分で落ちてしまいます。 変数にセットする方法が間違っているのでしょうか。 よろしくお願いします。 | ||||
|
投稿日時: 2006-04-25 17:44
途中省略されている部分も気になるんですが、
#Prepareして、値を設定する部分がないし
rs に NULLを設定した直後で rs.next()ってNullPointerException起きないんですか? | ||||
|
投稿日時: 2006-04-25 18:45
エラーメッセージから予想するに、
PreparedStatement.executeQuery()の実行後、 ResultSet.next()を呼ばずに ResultSet.getString(String str)を呼んでいるからでは? http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/sql/ResultSet.html | ||||
|
投稿日時: 2006-04-26 11:14
ありがとうございます。エラーは解決しました。
下記のようにgetStringで取ってきたpsSelDB1_の値nedan_を、クラスcreateStatement()でinsertしたいのですが、 値がinsertされません。クラスreceive()でSystem.out.printしてみたら、値は取れていました。 //クラスreceive() rs = psSelDB1_.executeQuery(); if(rs.next()){ count++; } if(count > 0){ psInsDB2_.executeUpdate(); nedan_ = rs.getString("nedan"); } //クラスcreateStatement() sb.append("INSERT INTO DB2( "); sb.append("nedan) VALUES ( ");// 値段 sb.append("'" + nedan_ + " )"); psInsDB2_ = con_.prepareStatement(sb.toString()); よろしくお願いします。 | ||||
|
投稿日時: 2006-04-26 11:27
「ResultSet.nextはコールされませんでした。というエラーが出ます。」は解決したのだから別スレッドにした方が良いと思います。データベースというよりJavaの質問なのだからJava Solutionじゃないだろうか・・・
>psInsDB2_ = con_.prepareStatement(sb.toString()); PreparedStatementオブジェクトを作成していますがexecuteUpdateを実行していますか? 提示されたソースからだと作るだけで終わってる気がしますが。 |
1