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 '?,?,?,?)'

使用?占位符写MYSQL查询语句,执行报错

 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 ‘?,?,?,?)‘ at line 1
 2     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 3     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
 4     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 5     at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
 6     at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
 7     at com.mysql.jdbc.Util.getInstance(Util.java:386)
 8     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)
 9     at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190)
10     at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4122)
11     at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
12     at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
13     at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2812)
14     at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2761)
15     at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:894)
16     at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:732)
17     at com.eloancn.test.run.ConntectTest.insert(ConntectTest.java:67)
18     at com.eloancn.test.run.ConntectTest.main(ConntectTest.java:44)

涉及测试的两个方法:

方法一:

 1 public static void main(String[] args) {
 2         try {
 3             Class.forName("com.mysql.jdbc.Driver");
 4             System.out.println("加载成功");
 5         } catch (ClassNotFoundException e) {
 6             System.out.println(e);
 7             e.printStackTrace();
 8         }
 9         InputStream in = null;
10         try {        //加载本地数据库链接数据
11             in = new FileInputStream("src/main/resources/jdbc.properties");
12         } catch (FileNotFoundException e) {
13             e.printStackTrace();
14         }
15         Properties pp = new Properties();
16         try {
17             pp.load(in);
18         } catch (IOException e) {
19             e.printStackTrace();
20         }
21         Object obj = null;
22         ArrayList<HashMap<String, String>> result = new ArrayList<HashMap<String, String>>();
23         try {
24             Connection conn = DriverManager.getConnection(pp.getProperty("jdbc.url"), pp.getProperty("jdbc.username"),pp.getProperty("jdbc.password"));
25             conn.setAutoCommit(false);
26             String sql = "insert into d_important_loandatum_score (tenderId,photoId,datumId,showClient)"
27                     + " values (?,?,?,?)";
28             insert(conn, sql, new Object[] { 1, "3", 2, 3 });
29             conn.commit();
30         } catch (Exception e) {
31             e.printStackTrace();
32         }
33
34     }

方法二:执行插入

 1 public static boolean insert(Connection conn, String sql, Object[] paras)throws Exception {
 2         PreparedStatement statement = null;
 3         String str = "";
 4         statement = conn.prepareStatement(sql);
 5         if (paras != null && paras.length != 0) {
 6             for (int i = 0; i < paras.length; i++) {
 7                 if (paras[i].getClass().getSimpleName().equals("Integer")) {
 8                     statement.setInt(i + 1, (Integer) paras[i]);
 9                     str+=paras[i];
10                 } else {
11                     statement.setString(i + 1, (String) paras[i]);
12                     str+=paras[i];
13                 }
14             }
15         }
16         boolean result = statement.execute(sql);
17 //        logger.info("sql:"+sql+" paras:"+str);
18         return result;
19     }

如上两个方法放入类中,执行报错。经过多次查找,最终确定是插入方法中标红部分编写错误,修改为:boolean result = statement.execute();

保存,重新执行,正常。

PS:同样使用preparement 预编译SQL时,查询,修改等调用方法时,最终执行都不能再次编译SQL,是MYSQL内部编码设置问题,会出现异常。

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 '?,?,?,?)'

时间: 2024-10-08 00:22:40

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 '?,?,?,?)'的相关文章

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 ...

下面是我update数据库时打印出来的异常: ### Error updating database. Cause: 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 nea

插入mysql语句报错:1064 - 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

插入一个很简单的sql语句时候,mysql一直报错: [SQL] INSERT INTO ORDER ( id, activity_id, order_type, phone, order_amount, order_state, pay_type)VALUES ( '4', '2121313', '1', '13552444989', '1', '1', '1' ) [Err] 1064 - You have an error in your SQL syntax; check the man

解决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 &#39;order (order_name, customer)

在学习hibernate一对多映射关系时,根据视频学习的时候,例子是顾客和订单的问题,一个顾客有多个订单.按照视频中的敲代码出现了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 'order (order_name, customer) 原因是order是mysql关键字,不能做

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 &#39;:ge

数据库表里命名有这个字段,可怎么就是报错呢,大神的解释: 加上之后立马好用!!! 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 ':ge

C# Mysql 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 ????

有几年没用过MySql数据了,今天在使用C#访问MySql数据库时出现了一个小插曲. 错误提示: 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 ??? 当然,错误提示已经很明白的说明是sql的语法错误. 然而,我的sql 语句是 select count(*) from tab

MySql 执行语句错误 Err] 1064 - 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

关于用Power Designer 生成sql文件出现 错误  [Err] 1064 - 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 'int not null auto_increment comment '用户id', 的解决办法 sql语句如下 1 drop table

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 &#39;where id = 2&#39; at line 8

字典管理修改接口测试传了id后出现: 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 'where id = 2' at line 8 百度翻译:您的SQL语法有错误:请查阅与您的MySQL服务器版本相对应的手册,以获得在第8行“where id=2”附近使用的正确语法. 百度解

Mysql错误:[Err] 1064 - 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

[Err] 1064 - 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 如果不是符号中英文切换的问题,那就是反引号写成单引号引起的  参考链接:https://blog.csdn.net/qq_27495157/article/details/80240156 原文地址:htt

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version

1.错误描述 org.hibernate.exception.SQLGrammarException: error executing work at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:80) at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(