关于PrepareStatement
2016-03-25 09:00
225 查看
它是Statement接口的子接口;
优点:
防SQL攻击;
提高代码的可读性、可维护性;
提高效率。
学习PreparedStatement的用法:
如何得到PreparedStatement对象:
给出SQL模板。
调用Connection的PreparedStatement prepareStatement(String sql模板);
调用pstmt的setXxx()系列方法sql模板中的?赋值!
调用pstmt的executeUpdate()或executeQuery(),方法都没有参数。
预处理的原理
服务器的工作:
校验sql语句的语法,编译,执行
PreparedStatement:
每个pstmt都与一个sql模板绑定在一起,先把sql模板给数据库,数据库先进行校验,再进行编译。执行时只是把参数传递过去而已!
若二次执行时,就不用再次校验语法,也不用再次编译!直接执行!
优点:
防SQL攻击;
提高代码的可读性、可维护性;
提高效率。
学习PreparedStatement的用法:
如何得到PreparedStatement对象:
给出SQL模板。
调用Connection的PreparedStatement prepareStatement(String sql模板);
调用pstmt的setXxx()系列方法sql模板中的?赋值!
调用pstmt的executeUpdate()或executeQuery(),方法都没有参数。
预处理的原理
服务器的工作:
校验sql语句的语法,编译,执行
PreparedStatement:
每个pstmt都与一个sql模板绑定在一起,先把sql模板给数据库,数据库先进行校验,再进行编译。执行时只是把参数传递过去而已!
若二次执行时,就不用再次校验语法,也不用再次编译!直接执行!
package com.jdbc.prepareStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import org.junit.Test; public class PreparedStatement { /* * 得到Connection * 得到Statement * 得到ResultSet * rs.next()返回的值 */ //准备四大参数 @Test public void fun() throws ClassNotFoundException, SQLException{ String driverClassName = "com.mysql.jdbc.Driver"; String url ="jdbc:mysql://localhost:3306/mydb1?useServerPrepStmts=true&cachePrepStmts=true"; String mysqlUname ="root"; String mysqlPword ="123"; //加载驱动类 Class.forName(driverClassName); //得到Connection Connection con =DriverManager.getConnection(url,mysqlUname,mysqlPword); /* * 给出sql模板 * 得到preparedStatement */ String sql = "select * from stu where name=?"; java.sql.PreparedStatement pstmt = con.prepareStatement(sql); //设置参数 pstmt.setString(1,"Tom"); //执行sql语句 ResultSet rs = pstmt.executeQuery(); rs.next(); System.out.println(rs.getString("id")); } }
相关文章推荐
- HDU 1847 Good Luck in CET-4 Everybody! (博弈论sg)
- 三言两语说shader(一)前言、一些资源
- 技术经典图书(附电子版下载地址)
- 30天入门 Android 开发, Google 与你一起圆梦
- 如何向数据库插入带有单引号(')的字符串?
- 数据可视化-使用EXCEL和PS制作一个复杂饼图
- PHP简单判断字符串是否包含另一个字符串的方法
- 申请SSL证书怎样验证域名所有权
- wifi之1M传输速率时占空比
- LookAndFeelInfo
- Android--全局获取Context
- PAT 乙级 1029.旧键盘
- hdoj 过山车 2063 (二分图最大匹配)
- jquery实现无缝图片轮播
- MongoDB 数据库安装
- POJ-1287 Networking ( 最小生成树 )
- 有GIS有意思︱讲述地图的故事
- Python基础教程
- TCP/IP协议(1)——基础知识(协议与接口)
- 1、简单的页面登录、下拉菜单、数据库查询