jdbc java数据库连接 4)PreParedStatement接口 之 区别和例子

Statement 和 PreparedStatement 的区别:

  1)语句不同

    PreparedStatement需要预编译以及需要参数

  2)由于PreparedStatement有缓存区,所以效率更高

  3)由于PreparedStatement有缓存区,所以更安全,防止了注入(1=1)

 

  PreparedStatement接口(推荐使用):

  代码1:

 1     /**
 2      * 添加数据语句
 3      **/
 4 
 5     private static void Intinsert() {
 6 
 7         Connection conn = null;
 8         PreparedStatement stsm = null;
 9         try {
10             // 1:调用工具类获取连接
11             conn = Jdbcutil.getConnection();
12 
13             // 2:准备sql预编译语句
14             // ?占用一个参数位
15             String sql = "INSERT INTO person (NAME,sex,age) VALUES (?,?,?);";
16 
17             // 3:执行sql预编译语句(检查语法)
18             stsm = conn.prepareStatement(sql);
19 
20             // 4:设置传递的参数
21 
22             stsm.setString(1, "张三");
23             stsm.setString(2, "男");
24             stsm.setInt(3, 20);
25 
26             // 5:发送参数,执行sql
27             // 注意:这里的方法后面没有参数
28             int result = stsm.executeUpdate();
29             System.out.println("影响了" + result + "行");
30         } catch (Exception e) {
31             e.printStackTrace();
32         } finally {
33             // 6:关闭连接
34             Jdbcutil.close(conn, stsm);
35         }
36     }

 

  代码2:

 1 /**
 2      * 修改语句
 3      */
 4 
 5     private static void testUpdate() {
 6 
 7         Connection conn = null;
 8         PreparedStatement stsm = null;
 9 
10         try {
11             // 1:创建连接
12             conn = Jdbcutil.getConnection();
13 
14             // 2:创建sql预编译语言
15             String sql = "UPDATE person SET NAME = ?WHERE id = ?;";
16 
17             // 3:执行sql预编译语言
18             stsm = conn.prepareStatement(sql);
19 
20             // 4: 设置参数
21             stsm.setString(1, "李四");
22             stsm.setInt(2, 3);
23 
24             // 5:发送参数,执行sql
25             int result = stsm.executeUpdate();
26             System.out.println("影响了" + result + "行");
27         } catch (Exception e) {
28             e.printStackTrace();
29         } finally {
30             Jdbcutil.close(conn, stsm);
31         }
32 
33     }

 

  代码3: 

 1 /**
 2      * 查询语句
 3      */
 4 
 5     private static void testSelect() {
 6 
 7         ResultSet rs = null;
 8         Connection conn = null;
 9         PreparedStatement stsm = null;
10         try {
11             // 1:创建连接
12             conn = Jdbcutil.getConnection();
13 
14             // 2:创建sql预编译语言
15             String sql = "SELECT * FROM person;";
16 
17             // 3:执行预编译语言
18             stsm = conn.prepareStatement(sql);
19 
20             // 这里不需要设置参数
21             // 4:执行sql语言
22             rs = stsm.executeQuery();
23 
24             // 5:查看所有数据
25             while (rs.next()) {
26                 int id = rs.getInt("id");
27                 String name = rs.getString("name");
28                 String sex = rs.getString("sex");
29                 System.out.println(id + "," + name + "," + sex);
30             }
31         } catch (Exception e) {
32             e.printStackTrace();
33             throw new RuntimeException(e);
34         } finally {
35             Jdbcutil.close(conn, stsm, rs);
36         }
37 
38     }

 

转载于:https://www.cnblogs.com/LZL-student/p/6012992.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值