0

プリペアドステートメントについて、構文で信じていることに問題があります。

私は次のコードを持っています

String query2="SELECT lname FROM school_student WHERE sid = ? ORDER BY sid;";

PreparedStatement ps = cn.prepareStatement(query2);
ps.setInt(1, 3);
ResultSet rs = ps.executeQuery(query2);

私が抱えている問題は、次のエラーメッセージが表示されることです。

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 '? ORDER BY sid' at line 1

ただし、「?」に置き換えると 3のクエリでは、クエリはエラーなしで正常に機能し、必要なものが得られます。「?」の値の設定方法に問題があるようです。私のクエリで?間違った構文を使用していますか?

4

3 に答える 3

7

単に使用する

ps.executeQuery();

(つまりexecuteQuery()、引数を取らないオーバーロードされたメソッドを使用します)。ステートメントを準備するときに、すでにクエリを渡しました。

于 2013-03-06T21:29:39.263 に答える
2

このクエリを使用してください:-

String query2 = "SELECT lname FROM school_student WHERE sid =" + attribute + "ORDER BY sid;";

単に使用する

ps.executeQuery();

于 2014-03-14T11:50:48.890 に答える
-1

クエリの準備中に構文の問題があると思います。これを試してください...Stringquery2 = "SELECT lname FROM school_student WHERE sid = + variablename + ORDER BY sid;"

于 2013-03-06T22:19:58.510 に答える