「?」付近の MySQLSyntaxErrorException: PreparedStatements による構文エラーの解決
Java で PreparedStatement を実行すると、構文エラーが発生することがあります。恐ろしい「near '?'」例外。原因と解決策を理解するために、問題を詳しく調べてみましょう。
問題の説明
PreparedStatement を実行しようとすると、エラー コード 1064 が発生し、構文を示す MySQLSyntaxErrorException が発生します。エラー。 MySQL クエリ ブラウザを使用したクエリ内の値の置換は成功し、問題がコード内にあることを示唆しています。
関連コード
String query = "select MemberID, MemberName from members where MemberID = ? or MemberName = ?"; Connection conn = DriverManager.getConnection(DATABASE_URL, USERNAME, PASSWORD); PreparedStatement s = conn.prepareStatement(query); s.setInt(1, 2); s.setString(2, "zen"); ResultSet rs = s.executeQuery(query); // Error
例外
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 '? or MemberName = ?' at line 1
解決策
このエラーの根本原因は次のとおりです。 MySQL は未処理の「?」を検出します。 SQLクエリ内で。これを解決するには、次の手順に従います。
ResultSet rs = s.executeQuery();
追加考慮事項
以上が`s.executeQuery(query)` が「near '?'」で MySQLSyntaxErrorException を引き起こすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。