- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 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!
<小时/>
与问题无关,您的代码正在泄漏资源。几个小时后数据库将耗尽它们,您的应用程序将崩溃。要解决此问题,您需要遵循 JDBC 惯用法,在 finally
block 中关闭 Connection
、Statement
和 ResultSet
获取它们的 try
block 的位置。检查JDBC basic tutorial了解更多详情。
关于java - 尝试执行PreparedStatement时出现MySQLSyntaxErrorException 接近 "?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49938489/
我有一个像下面这样的代码。我已经尝试了堆栈中的其他解决方案,但似乎没有任何效果。生成错误的 Java 代码如下所示。 public Connection getConnection() {
我有这段代码: String check="SELECT COUNT(*) as check FROM recordstudent WHERE STUDENT_ID="+T_STUDENT_I
在我的项目中,我编写了一些代码来从数据库表中搜索员工姓名并将其加载到 jcombobox 中。 表名:employee 列名:empid(Primarykey), emp_name, position
我有一个奇怪的问题。当我在以下代码段中执行查询时,它会抛出 MySQLSyntaxErrorException 并显示以下消息: You have an error in your SQL synta
我在这里看到了很多关于我的问题的答案,但找不到解决方案。我正在读取 Excel 文件并存储在 mysql 数据库中。这是我的代码 PreparedStatement sql_statement = (
我正在尝试更新我的 jtable(更改值并按 Enter 键),但出现错误。由于大小原因,错误未完整。我认为其余部分只是 c3p0 池连接工具生成的不相关信息。 假设 起初,我认为这可能是 c3p0
我在 spring 框架的 mapper.xml 中遇到一些问题 失败: check the manual that corresponds to your MySQL server version
这个问题已经有答案了: mysql prepared statement error: MySQLSyntaxErrorException (2 个回答) 已关闭 8 年前。 我花了几个小时研究看起来
我试图从 java 桌面程序在 mysql 中创建一个表,但我收到了 MySqlSyntaxErrorException。 查询是: CREATE TABLE FileXFascia(fila0 In
这是错误: run: Mon Mar 25 05:22:00 SGT 2019 WARN: Establishing SSL connection without server's identity
我使用准备语句编写了 select 语句。每次尝试运行它都会出现此错误。我是怎么克服这个错误的?我的 jdbc 连接器是 mysql-connector-java-5.1.13-bin.jar。我的代
session.getAttribute('loginId')//giving 1 ResultSet rs=st.executeQuery("select * from interest where
String sql = "INSERT INTO order " + "(customerid, pant, shirt, date) " + "VALUES ('" + jTextField
我正在使用 Java 将一些数据插入到 mysql 中。但是将撇号(标点符号)放入数据中(附近的每周跟踪器表明工作增长)它给了我 MySQLSyntaxErrorException。请给我适当的解决方
我对使用 Java 的 MySQL 还很陌生,但是我已经执行了一些成功的 INSERT 查询,但是似乎无法在没有 MySQLSyntaxErrorException 异常的情况下执行 CREATE T
我目前正在使用 hibernate 构建一个基于网络的小工具。我使用 Tomcat v7.0 服务器在 eclipse 中测试该站点。我的数据库在 Linux 上使用 MySQL 5.6 版。 现在,
我看过几个相关的问题及其答案,但这对我的案子没有帮助。 我有一个 Spring boot 应用程序,我在其中使用 Jhipster 创建了实体,另外我自己添加了一些手动变更日志变更集。 我有一个医生实
当我执行以下查询时抛出以下异常 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an er
我的目标是向我创建的现有表中添加一个新行。但是,我收到以下错误。 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have
我有以下 Java 代码: String query = "Select 1 from myTable where name = ? and age = ?"; PreparedStatement s
我是一名优秀的程序员,十分优秀!