0

Java コードから列の最大データをフェッチしようとしていますが、結果セットでエラーが発生します

私のコードは以下のとおりです

Class.forName("com.mysql.jdbc.Driver");

con=DriverManager.getConnection("jdbc:mysql://localhost/testdb123","root","root");

LOGGER.info("connected to the database");
Statement stmt0 = conn.createStatement();           
String qr= "INSERT INTO stumarks " + "VALUES ("+null+","+marks+")";
Statement stmt1 = conn.createStatement();
stmt1.executeUpdate(qr);
String countQuery = "select MAX('seqNum') as count1 from stumarks";
ResultSet res = stmt0.executeQuery(countQuery);
LOGGER.info("result set success!!"); 
int num = res.getInt("count1");``
System.out.println(num);
4

4 に答える 4

3

値を取得しようとする前に

int num = res.getInt("count1");

結果セットの最初の行にアクセスするには、 ResultSet#next()を呼び出す(そして true を返すことを確認する) 必要があります。

if (rs.next()) {
    // Do what you want
    int num = res.getInt("count1");
    System.out.println(num);
}

結果セットを反復し続けるには、whileループを使用できます。

于 2013-09-27T07:53:40.477 に答える
0

Javadoc に記述されている結果セットは、インデックス -1 から始まります。 .next()最初の結果を取得するには、一度呼び出す必要があります。

最初、カーソルは最初の行の前に配置されます。

セキュリティの観点から、リクエストに変数を追加するのは避け、代わりにパラメーターを使用する必要があります (SQL インジェクションの問題)。

また、すべての DB 接続スロットを使用することを忘れないでくださいclose。JRE クラスを使用する必要がない場合でも、結果セットを閉じることができます (良い方法です)。connectionstatementOut of memory

ResultSet オブジェクトは、それを生成した Statement オブジェクトが閉じられるか、再実行されるか、複数の結果のシーケンスから次の結果を取得するために使用されると、自動的に閉じられます。

于 2013-09-27T07:57:35.877 に答える