使用PreparedStatement对象完成数据库的增删改查

  • 特点:
    • 防止sql注入
    • 提升sql语句的执行效率(当批量执行同一类型的sql语句时)
  • 使用:
    • 创建集合或者实体类对象(可选-查询)
    • 加载驱动
    • 获取连接对象
    • 设置手动数据提交(可选–增删改)
    • 创建sql命令
    • 获取sql命令对象
    • 给占位符赋值
    • 执行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
99
100
public class UserDaoImpl {	
//查询用户信息
public User getUserInfo(String uname,String upwd) throws ClassNotFoundException, SQLException{
//声明User对象
User u=null;
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//创建连接对象
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "oracle");
//创建sql命令
String sql="select * from t_user where uname=? and upwd=?";
//创建sql命令对象
PreparedStatement ps=conn.prepareStatement(sql);
//给占位符赋值(占位符从左到右角标从1开始)
ps.setString(1, uname);
ps.setString(2, upwd);

//执行sql命令
ResultSet rs=ps.executeQuery();
//遍历查询结果
while(rs.next()){
u=new User();
u.setUnum(rs.getInt("unum"));
u.setUname(rs.getString("uname"));
u.setUpwd(rs.getString("upwd"));
return u;
}
//关闭资源
rs.close();
ps.close();
conn.close();
//返回执行结果
return u;
}
//新增--preparedStatement
public int insUser2() throws ClassNotFoundException, SQLException{
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//创建连接对象
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "oracle");
//创建sql命令
String sql="insert into t_user values(?,?,?)";
//创建sql命令对象
PreparedStatement ps=conn.prepareStatement(sql);
//给占位符赋值
ps.setInt(1, 7);
ps.setString(2,"赵六");
ps.setString(3,"666");
//执行sql命令
int i=ps.executeUpdate();
//关闭资源
ps.close();
conn.close();
//返回结果
return i;
}
//更新
public int upUser(String uname,int unum) throws ClassNotFoundException, SQLException{
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//获取连接对象
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "oracle");
//创建sql命令
String sql="update t_user set uname=? where unum=?";
//获取sql命令对象
PreparedStatement ps=conn.prepareStatement(sql);
//给占位符赋值
ps.setString(1, uname);
ps.setInt(2, unum);
//执行sql命令
int i=ps.executeUpdate();
//关闭资源
ps.close();
conn.close();
//返回结果
return i;
}
//删除
public int delUser(int unum) throws ClassNotFoundException, SQLException{

//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//获取连接对象
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "oracle");
//创建sql命令
String sql="delete from t_user where unum=?";
//获取sql命令对象
PreparedStatement ps=conn.prepareStatement(sql);
//给占位符赋值
ps.setObject(1, unum);
//执行sql命令
int i=ps.executeUpdate();
//关闭资源
ps.close();
conn.close();
//返回结果
return i;

}
}