java - 在 select 语句中带有参数化 where 子句的 PreparedStatement 抛出异常

标签 java mysql jdbc prepared-statement

我收到异常,因为 SQLException 显示语法有问题,请检查手册是否相同。

我的java代码如下。

PreparedStatement pst;
String sql ="SELECT * FROM patient.medicine where _id=?";
pst = cn.prepareStatement(sql);
    pst.setInt(1, 1);
ResultSet rs = pst.executeQuery(sql);

如果我通过附加保存 id 值的变量来执行此操作,一切正常。

*SELECT * FROM patient.medicine where _name=?*
Oct 19, 2013 11:15:46 AM com.seed.entity.Patient getData
SEVERE: null
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 '?' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2728)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2678)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1612)
at com.seed.entity.Patient.getData(Patient.java:257)
at com.seed.entity.Patient.main(Patient.java:360)

最佳答案

您的代码中有一个错误:

PreparedStatement pst;
String sql ="SELECT * FROM patient.patient P WHERE P._ID = ?";
pst = cn.prepareStatement(sql);
pst.setInt(1, 1);
ResultSet rs = pst.executeQuery(); // without arguments

关于java - 在 select 语句中带有参数化 where 子句的 PreparedStatement 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19462563/

相关文章:

java - 在 JAVA API 上使用时 Let's Encrypt 证书不起作用

mysql - MYSQL中两个日期之间的确切差异

php - SQLSTATE [HY000] [1049] 未知数据库 ' register_login'

java - JDK 更新后 Netbeans JDBC 错误 "Unable to find suitable driver"

Java如何使用类对象进行List初始化

java - 底部导航栏被 ScrollView 布局推出 View 之外

使用 JDBC 的 Java - 连接太多?

java - 使用jdbc中的execute方法更新数据

java - QStackedWidget 相当于 Java Swing

mysql - 错误 1140 (42000) 在没有 GROUP BY 的聚合查询中,表达式 #1