PreparedStatement 構文エラー
Java PreparedStatement を使用する場合、エラーを避けるために正しい構文を確認することが重要です。提供されたコード スニペットでは、間違ったメソッド呼び出しにより構文エラーが発生しました。
select1 メソッドは、準備されたステートメント SQL と整数 randNum を受け取り、それを実行しようとします。ただし、エラー メッセージは SQL ステートメントの構文の問題を示しています:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?)' at line 1
問題は select1 メソッド内の return ステートメントにあります:
return this.stmt.executeQuery(sql);
この行は誤って実行しようとしていますSQL ステートメントを準備済みステートメントではなく通常のステートメントとして使用します。準備されたステートメントを実行する正しいメソッドは、executeQuery() です。
エラーを解決するには、コードを正しい useQuery() 呼び出しに置き換えます。
return this.stmt.executeQuery();
Updatedコード:
public ResultSet select1(String sql, int randNum) { try { this.stmt = con.prepareStatement(sql); stmt.setInt(1, randNum); return this.stmt.executeQuery(); // Call PreparedStatement.executeQuery } catch (SQLException e) { e.printStackTrace(); return null; } }
注:
SQL クエリの構文も正しい必要があります。この場合、WHERE 句の値の周囲にバッククォートがないことがエラーの原因でした。正しい SQL ステートメントは次のとおりです:
String selectSql1 = "SELECT `value` FROM `sampling_numbers` WHERE `value` < ?";
以上がJava PreparedStatement が構文エラーをスローするのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。