zoukankan      html  css  js  c++  java
  • jdbc中Statement和PreparedStatement有什么区别?哪个性能更好?

    Statement和PreparedStatement的功能主要是对sql语句的执行

    区别

    (1)Statement每执行一条sql语句就需要生成一条执行计划,执行100条就需要100条执行计划PreparedStatement在执行相同

    功能的sql语句,但仅仅是参数不同时,则只需要编译一次,更适合批量处理

    (2)PreparedStatement中的SQL语句是可以带参数的,避免了用字符串连接拼接SQL语句的麻烦和不安全

    例如sql语句

    select * from user where id=1
    select * from user where id=2

    如果用Statement语句执行则需要生成两个执行计划而PreparedStatement则只需要编译一次,执行时仅仅是换个参数而已所以当

    在执行大量的功能重复的语句时,效率会成百倍的提升。

    两者的使用:

    首先连接数据库    这都是相同的
    String url = "jdbc:mysql://localhost:3306/test";  
    String user = "root";
    String password = "root";
    String sql = "select * from goods where goodsid = 123";
    DriverManager.registerDriver(new com.mysql.jdbc.Driver());//注册数据库驱动
    Connection conn = DriverManager.getConnection(url, user, password);//连接数据库
    
    Statement在执行sql语句时不能再sql语句中设置参数

    Statement st = conn.createStatement();
    		ResultSet rs = st.executeQuery(sql);
    		while(rs.next()){
    			int id = rs.getInt("goodsid");
    			String name = rs.getString("goodsname");
    			int price = rs.getInt("costprice");
    			String manufacturer = rs.getString("manufacturer");
    			System.out.println(id+"   "+name+"   "+price+"    "+manufacturer);
    		}
    		rs.close();
    		conn.close();
    		st.close();
    PreparedStatement执行sql语句
    PreparedStatement pst = conn.prepareStatement(sql1);
    		pst.setInt(1,789);//第一个参数指的是sql语句中第几个参数(问号),第二个参数为?处要填的值
    		pst.setString(2, "大米");
    		pst.setInt(3, 220);
    		pst.setInt(4, 500);
    		pst.setString(5,"大米公司");
    		pst.executeUpdate();
    		conn.close();
    		pst.close();
    参考:http://blog.csdn.net/jiangwei0910410003/article/details/26143977



  • 相关阅读:
    Windows vm install MAC OS
    DragonBones cpp
    APK .
    cocos2D-X vs2015 lua project 断点调试
    为什么前后端分离了,你比从前更痛苦?
    CSS3中一些鲜为人知的属性
    Web认证_介绍Web开发中几种常用的认证机制
    基于JWT的Token认证机制实现及安全问题
    别了,JavaScript;你好WebAssembly
    css设置全屏背景图,background-size 属性
  • 原文地址:https://www.cnblogs.com/tonghao/p/8506021.html
Copyright © 2011-2022 走看看