【发布时间】:2011-05-07 01:49:37
【问题描述】:
我正在尝试使用 Java 中的 PreparedStatement 执行查询。
我在尝试执行查询时收到错误号 1064(语法错误)。
我已经在 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);
这是我得到的例外:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你有一个 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,以便在 '? 附近使用正确的语法或会员名 = ?'在第 1 行
【问题讨论】:
-
提供有关“错误”的更多详细信息 - Java 中的异常具有堆栈跟踪
-
就在调用 executeQuery 之前,我在调试期间看到参数被替换到 PreparedStatemet 中,查询变为“com.mysql.jdbc.JDBC4PreparedStatement@6e9770a3: select MemberID, MemberName from members where MemberID = 2 或 MemberName = 'zen'"
-
好吧,你已经提供了你的全部代码。这就是没有人回答的原因——太长了。隔离相关位并仅显示它们。