我正在尝试使用Java中的PreparedStatement执行查询.我尝试执行查询时出现错误号1064(语法错误).我已经在MySQL查询浏览器中使用替换值测试了这个,但是工作正常.我的代码出了什么问题?这是相关的代码:String que...
我正在尝试使用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: 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
解决方法:
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查询中.这确实是无效的SQL语法.所以它不会被PreparedStatement取代.你猜怎么着?
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(query); // Fail!
您正在使用原始查询覆盖准备好的查询!您需要调用无参数PreparedStatement#executeQuery()方法而不是Statement#executeQuery(String).
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(); // OK!
与此问题无关,您的代码正在泄漏资源.数小时后,数据库将耗尽,您的应用程序将崩溃.要解决这个问题,您需要遵循在获取它们的try块的finally块中关闭Connection,Statement和ResultSet的JDBC习惯用法.有关更多详细信息,请查看JDBC basic tutorial.
本文标题为:java – 尝试执行PreparedStatement时,“?”附近的MySQLSyntaxErrorException
基础教程推荐
- Spring Boot Rest常用框架注解详情简介 2022-12-19
- VSCode中开发JavaWeb项目的详细过程(Maven+Tomcat+热部署) 2023-06-05
- spring boot项目实战之实现与数据库的连接 2023-07-15
- SpringBoot事务不回滚的解决方案 2023-05-31
- SpringBoot如何基于POI-tl和word模板导出庞大的Word文件 2023-03-22
- java – 如何在zip文件中访问SQLite数据库 – android 2023-10-29
- 使用SpringDataJpa创建中间表 2023-01-02
- SpringMVC五种类型参数传递及json传递参数 2023-03-06
- mybatisplus使用xml的示例详解 2023-04-22
- 一文搞懂SpringMVC中@InitBinder注解的使用 2023-02-10
