mysql关闭prepareStatement功能

转载 2015年11月19日 16:03:37
环境为 
mysql 5.1.39 
mysql-connector-j  5.1.11 
测试代码 
Java代码  收藏代码
  1. public static void main(String[] args) throws Exception {  
  2. Connection conn = getConnection();  
  3.   
  4. PreparedStatement ps = conn  
  5. .prepareStatement("select * from test where name=?");  
  6. ps.setInt(11);  
  7. ps.execute();  
  8.   
  9. Statement stmt = conn.createStatement();  
  10.   
  11. stmt.execute("select * from test where name=1");  
  12.   
  13. conn.commit();  
  14. conn.close();  
  15.   
  16. }  
  17.   
  18. private static Connection getConnection() throws Exception {  
  19. Class.forName("com.mysql.jdbc.Driver");  
  20. Connection conn = DriverManager.getConnection(  
  21. "jdbc:mysql://localhost:3306/db_test?useServerPrepStmts=false",  
  22. "db_test""db_test");  
  23. conn.setAutoCommit(false);  
  24. return conn;  
  25. }  

在mysql驱动url中如果设置useServerPrepStmts=false,那么上面两条语句执行时,向服务器发送的数据包一样(用wireshark抓包工具加断点看到)。 
如果设置useServerPrepStmts=true,那么执行conn.prepareStatement("select * from test where name=?");语句时,会向服务器发送命令,告知这条语句,执行ps.execute();时则只发送参数和语句编号。此时在服务器端 
mysql> show global status like 'Com_stmt%' ; 
可以看到 Com_stmt_prepare数量增加。

怎么跳出MySQL的10个大坑

MySQL · 性能优化· Group Commit优化 背景 关于Group Commit网上的资料其实已经足够多了,我这里只简单的介绍一下。 众所周知,在MySQL5.6之前的版...
  • Vanhukseter
  • Vanhukseter
  • 2015年01月28日 17:29
  • 5097

JDBC中关于Connection, PreparedStatement, ResultSet是否关闭的一些思考

如果你不使用连接池,那么就没有什么问题,一旦Connection关闭,数据库物理连接就被释放,所有相关Java资源也可以被GC回收了。 但是如果你使用连接池,那么请注意,Connection关闭并不...
  • wc0077
  • wc0077
  • 2016年04月07日 10:25
  • 6463

prepareStatement进行增删改查---填充占位符(防止sql注入)

首先创建表 然后构造一个实体类–封装数据库字段 Studentpackage com.godinsec;public class Student { private int id; ...
  • u013210620
  • u013210620
  • 2016年09月27日 23:32
  • 1267

mysql c preparestatement

今天折腾了一个mysql的c的insert语句,与java访问oracle类似,mysql也支持这种preparestatement,使用这种语句的好处有很多,在oracle之中,这种方式在后台是sq...
  • xiqi8144
  • xiqi8144
  • 2009年08月07日 18:34
  • 1858

PrepareStatement 中in like的用法

PrepareStatement的用法在Mysql中很重要,ye
  • xiaobaismiley
  • xiaobaismiley
  • 2014年09月22日 23:30
  • 4055

MySQL prepare statement速度的测试思考

最近一直纠结于MySQL预处理API和普通API的速度问题,网上的一致说法都是主张使用预处理API,因为它的SQL语句会提前预编译,后续只要传送参数到MySQL,减少多次调用时编译需要的时间和多次调用...
  • peng314899581
  • peng314899581
  • 2017年02月22日 21:12
  • 415

mysql不支持PreparedStatement.setArray()的解决方案

查询中有in条件的时候mysql数据库不支持通过PreparedStatement.setArray()传递数组的方式设置参数,如: PreparedStatement pstmt = conn.p...
  • lwnt08
  • lwnt08
  • 2018年01月12日 15:25
  • 54

JAVA连接MYSQL,使用PreparedStatement 写查询,修改,添加,删除,语句

http://blog.csdn.net/blacksource/article/details/4380358添加:PreparedStatement ps=conn.prepareStatemen...
  • w124374860
  • w124374860
  • 2016年01月25日 15:26
  • 3835

Java高效操作MySQL

Statement可以操作数据库,但是,在需要做一些结构相似的操作时,PrepareStatement比Statement更高效。 在创建PrepareStatement的时候使用 prepare...
  • zhy_cheng
  • zhy_cheng
  • 2012年09月20日 17:07
  • 3372

使用连接池一定要正确关闭PreparedStatement和ResultSet

使用jdbc连接数据库,获取数据库连接的过程在网络上其他文章中多有介绍,在此不多介绍,本文主要分析获取数据库连接并且完成处理过程后如何处理这个连接。 先看一个简单的模拟数据库连接池获取连接的实例...
  • zf_1024
  • zf_1024
  • 2017年09月15日 13:08
  • 940
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql关闭prepareStatement功能
举报原因:
原因补充:

(最多只允许输入30个字)