目录
pstm构建动态sql
JDBC prepareStatement 与Statement的区别
prepareStatement是Statement的一个子接口
使用步骤分为3步:
1创建:通过连接获得prepareedStatement对象
2,给?赋值(也称参数绑定)
3.执行SQL
先来看看JDBC prepareStatement 与Statement的区别
如上图,可以概括两点,
一、使用PreparedStatement更安全,解决了Sql注入的问题
二、效率更高,特别是调用次数较多的时候
相比较Statement而言,它是个半成品。
它是Statement的一个子接口,使用步骤分为3步:
1创建:通过连接获得prepareedStatement对象
String sql = "Select * from users_luxw where username= ? And password = password=? "
PreparedStatement pstm = conn.prepareStatemement(sql);
创建时,将Sql语句中取值发生变化的部分用占位符(?)代替、。
2,给?赋值(也称参数绑定)
使用Set[type] 方法给?赋值、其中Type表示?位置的数据类型。第一个参数代表问号位置,从1开始;第二个参数是具体取值,比如:
pstm.setString(1, username);
pstm.setString(2, password);
3.执行SQL
Pstm.executeQuery();
Pstm.executeUpdate();//执行官更新时使用
此时JDBC将所有对应的参数发送至数据库服务器,调用池中有第一步创建的预编译的SQL并执行
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99package jdbc; import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class demoprearedStatementf { public static void main(String[] args) { //加载获取连接 Connection conn = null; PreparedStatement psm = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); //获取连接 String url = "jdbc:mysql://localhost:3306/mybase"; String user = "root"; String password = "root123"; conn = DriverManager.getConnection(url, user, password); //3、创建一个preparedStatement对象 预编译sql语句 //查询 String sql = "select * from test where deptno = ?"; psm = conn.prepareStatement(sql); psm.setString(1,"10"); //删除 // String sql = "delete from test where ename=? "; // psm = conn.prepareStatement(sql); // psm.setString(1,"小弟"); // //修改 // String sql = "update test set job = ? where ename = ?"; // psm = conn.prepareStatement(sql); // psm.setString(1, "manner"); // psm.setString(2, "白展堂"); // //插入 // String sql = "insert into test(ename,job,deptno) values(?,?,?)"; // psm = conn.prepareStatement(sql); // psm.setString(1, "大白"); // psm.setString(2, "leader"); // psm.setInt(3, 20); //4执行sql语句 // int line = psm.executeUpdate();//增删改都用 executeUpdate // System.out.println("影响行数: "+line); rs = psm.executeQuery(); while(rs.next()){ int empno = rs.getInt(1); String ename = rs.getString(2); String job = rs.getString(3); int mgr = rs.getInt(4); Date hiredata = rs.getDate(5); int sal = rs.getInt(6); int commit = rs.getInt(7); int deptno = rs.getInt(8); System.out.println(empno+" "+ename+" "+job+" "+mgr+" "+hiredata+" "+sal+" "+commit+" "+deptno); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ try { rs.close(); psm.close(); conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
最后
以上就是舒心手套最近收集整理的关于JDBC prepareStatement 与Statement的区别它是Statement的一个子接口,使用步骤分为3步:的全部内容,更多相关JDBC内容请搜索靠谱客的其他文章。
发表评论 取消回复