2

我正在用 java se 编写一个简单的应用程序jdk 1.7,使用netbeans 7.1.2MySQL 5

但我在下一个代码中有一个错误:

String sql = "SELECT idpaciente, ap_paterno, ap_materno, nombres, edad, direccion, telefono, descuento, movil, email, docId FROM paciente WHERE ap_paterno LIKE ? ";
pst = con.prepareStatement(sql);

pst.setString(1, paciente.getApellidoPaterno());

ResultSet rs = pst.executeQuery(sql);

此代码编译良好,但执行后,我有语法错误,netbeans 说:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在“?”附近使用的正确语法 在第 1 行

使用netbeans的调试器,错误在executeQuery中,但我找不到我的错误。

4

2 回答 2

2

PreparedStatement.executeQuery()不接受任何参数,但是由于接口继承了Statement.executeQuery(String sql)您正在调用它。只需致电:

ResultSet rs = pst.executeQuery();
于 2012-05-26T05:20:11.263 回答
2

http://www.theserverside.com/discussions/thread.tss?thread_id=33182

上面的链接对此主题进行了一些讨论。显然,预先准备好的陈述不适用于“喜欢”和“在”。

所以问题是准备好的语句不能替换 ? 结果查询不正确。您看到的错误直接来自 mysql。

于 2012-05-26T05:25:02.183 回答