jdbc中Statement和PreparedStatement有什么区别?哪个性能更好?

3 篇文章 0 订阅
1 篇文章 0 订阅

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



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值