MySQL同时执行多条SQL语句解决办法
2013-05-06 14:27
756 查看
JDBC 4 MySQL在一个Statement中执行一条SQL语句的时候可以正确执行,如果同时执行多条,就会报SQL语法错误(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 ';....'),甚是费解。
经过网上查找,发现有两种解决办法:
1、最简单的办法,在MySQL的连接字符串中设置allowMultiQueries参数置为true,
如:jdbc.url=jdbc:mysql://localhost:3306/ibatis?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true 即可。
2、在程序中对SQL语句以分号拆分成多条SQL语句,然后使用Statement的addBatch方法,最后executeBatch就行(此处推荐使用PreparedStatement addBatch() and executeBatch() and clearBatch())。
综上是因为mysql的JDBC驱动不支持这种写法,不过sqlserver的倒是支持,oracle的jdbc中甚至都不能出现分号 否则报java.sql.SQLException: ORA-00911: invalid character异常。
PS:MySQL设置了允许同时执行多条SQL语句后,将存在SQL注入的风险。参见:http://www.plhwin.com/2014/06/13/web-security-sql/
参考:
http://blog.163.com/wang_hai_fei/blog/static/30902031200962261020129/ http://yklovejava-163-com.iteye.com/blog/1601205 http://blog.csdn.net/yzsind/article/details/7853029 http://bbs.csdn.net/topics/360255442 http://bbs.csdn.net/topics/390448506
syntax to use near ';....'),甚是费解。
经过网上查找,发现有两种解决办法:
1、最简单的办法,在MySQL的连接字符串中设置allowMultiQueries参数置为true,
如:jdbc.url=jdbc:mysql://localhost:3306/ibatis?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true 即可。
2、在程序中对SQL语句以分号拆分成多条SQL语句,然后使用Statement的addBatch方法,最后executeBatch就行(此处推荐使用PreparedStatement addBatch() and executeBatch() and clearBatch())。
综上是因为mysql的JDBC驱动不支持这种写法,不过sqlserver的倒是支持,oracle的jdbc中甚至都不能出现分号 否则报java.sql.SQLException: ORA-00911: invalid character异常。
PS:MySQL设置了允许同时执行多条SQL语句后,将存在SQL注入的风险。参见:http://www.plhwin.com/2014/06/13/web-security-sql/
参考:
http://blog.163.com/wang_hai_fei/blog/static/30902031200962261020129/ http://yklovejava-163-com.iteye.com/blog/1601205 http://blog.csdn.net/yzsind/article/details/7853029 http://bbs.csdn.net/topics/360255442 http://bbs.csdn.net/topics/390448506
相关文章推荐
- MySQL同时执行多条SQL语句解决办法
- MySQL同时执行多条SQL语句解决办法
- 让MySQL同时执行多条SQL语句的解决办法
- MySQL同时执行多条SQL语句解决办法
- 让MySQL同时执行多条SQL语句的解决办法
- MySql多条sql语句执行解决办法
- 在Eclipse中测试MySQL-JDBC(9)statement 批处理(同时执行多条sql语句)
- 在Eclipse中测试MySQL-JDBC(10)preparestatement批处理(同时执行多条sql语句)
- C# Oracle同时执行多条sql语句
- 执行sql语句一直弹出保存对话框的解决办法
- MySQL 执行SQL脚本 报ERROR 1231 (42000)的解决办法【转】
- MyBatis+MySQL同时执行多条SQL,实现多表插入数据
- 同时执行多条sql语句提高性能
- MyBatis MapperProvider MessageFormat拼接批量SQL语句执行报错的原因分析及解决办法
- 关于PHP执行SQL语句乱码的解决办法-5DZ.IN
- MySQL导入SQL文件过大或连接超时的解决办法/在navcat执行sql卡在0%
- mysql中如何用一条sql语句删除多条记录及Shell下执行mysql语句和查询统计
- MyBatis MapperProvider MessageFormat拼接批量SQL语句执行报错的原因分析及解决办法
- mysql的sql查询语句含有中文,rs.next()就false的解决办法
- mysql使用kill命令解决死锁问题,杀死某条正在执行的sql语句