mysql高版本驱动的写法_mysql 高版本jdbc驱动程序 使用PreparedStatement.setBinaryStream方法报错及解决办法...

在使用mysql-connector-java-5.0.8-bin.jar和5.1.13-bin.jar时,执行PreparedStatement的setBinaryStream方法遇到SQL语法错误。错误提示指向SQL语句的某一行。更换为mysql-connector-java-3.1.14-bin.jar后问题解决。本文将探讨这个问题的原因和解决方法。
摘要由CSDN通过智能技术生成

mysql 使用以下版本驱动程序 在PreparedStatement中执行setBinaryStream方法时报错误:

mysql-connector-java-5.0.8-bin.jar

mysql-connector-java-5.1.13-bin.jar

错误信息如下:

Java代码

com.mysql.jdbc.exceptions.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 '? ?±n????#??1}?M????/' dG???zPd m7??‘* 4 ??@? 8 ê§??à????‘6m?-?

E?OH??A?—6tl?iq?' at line 1

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1051 )

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566 )

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498 )

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959 )

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113 )

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568 )

at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2113 )

at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1364 )

at com.frameworkset.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:169 )

at com.frameworkset.common.poolman.PreparedDBUtil.innerExecute(PreparedDBUtil.java:1223 )

at com.frameworkset.common.poolman.PreparedDBUtil.executePrepared(PreparedDBUtil.java:1578 )

at com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
com.mysql.cj.jdbc.PreparedStatement 类是用于执行预编译 SQL 语句并传递参数的 JDBC 接口。它是 java.sql.PreparedStatement 接口的实现类,用于与 MySQL 数据库进行交互。 通过使用 PreparedStatement,可以有效地防止 SQL 注入攻击,提执行 SQL 语句的效率,并且可以重复使用已经编译好的语句,从而提应用程序的性能。 以下是使用 com.mysql.cj.jdbc.PreparedStatement 类执行 SQL 查询的示例代码: ``` import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class Main { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb?serverTimezone=UTC"; String username = "root"; String password = "123456"; try (Connection conn = DriverManager.getConnection(url, username, password)) { String sql = "SELECT * FROM users WHERE age > ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, 18); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { System.out.println(rs.getString("name") + ", " + rs.getInt("age")); } } catch (SQLException e) { e.printStackTrace(); } } } ``` 在上面的代码中,我们首先创建了一个 Connection 对象,然后使用 prepareStatement() 方法创建了一个 PreparedStatement 对象。在 SQL 语句中,我们使用了一个占位符 ? 来表示参数,然后使用 setInt() 方法为占位符设置参数值。最后,使用 executeQuery() 方法执行 SQL 查询,并遍历 ResultSet 对象来获取查询结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值