- PR -

ResultSet.nextはコールされませんでした。というエラーが出ます。

1
投稿者投稿内容
まな
常連さん
会議室デビュー日: 2005/10/26
投稿数: 45
投稿日時: 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の項目を変数にセットの部分で落ちてしまいます。
変数にセットする方法が間違っているのでしょうか。

よろしくお願いします。
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2006-04-25 17:44
途中省略されている部分も気になるんですが、
#Prepareして、値を設定する部分がないし

引用:

まなさんの書き込み (2006-04-25 17:33) より:

ResultSet rs = null;
if(rs.next()){



rs に NULLを設定した直後で
rs.next()ってNullPointerException起きないんですか?
tnk
会議室デビュー日: 2005/06/10
投稿数: 11
投稿日時: 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
まな
常連さん
会議室デビュー日: 2005/10/26
投稿数: 45
投稿日時: 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());

よろしくお願いします。
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2006-04-26 11:27
「ResultSet.nextはコールされませんでした。というエラーが出ます。」は解決したのだから別スレッドにした方が良いと思います。データベースというよりJavaの質問なのだからJava Solutionじゃないだろうか・・・

>psInsDB2_ = con_.prepareStatement(sb.toString());
PreparedStatementオブジェクトを作成していますがexecuteUpdateを実行していますか?
提示されたソースからだと作るだけで終わってる気がしますが。
1

スキルアップ/キャリアアップ(JOB@IT)