PreparedStatement的用法以及与Statement的区别,很重要的知识点!!!

PreparedStatement是Statement的子接口,相比Statement,PreparedStatement具备更高的效率以安全性,使用Statement时,其原理为先创建对象,然后将sql语句发送到数据库执行,这个过程中可将用户输入的数据拼接到sql语句中,存在sql注入风险;因此使用PreparedStatement替代Statement成为了一个选择,PreparedStatement具备预编译功能,其首先对sql语句进行预编译,然后再将值填充到对应占位符处,从而有效避免了sql注入的风险。

PreparedStatement用法如下:

String sql = "select * from tbuser where username=? and password=?";
        Connection conn = null;
        PreparedStatement ps = null;
        try {
            conn = DriverManager.getConnection(
                    "jdbc:mysql://127.0.0.1:3306/test", 
                    "root",
                    "root");
//            stmt = conn.createStatement();
//            ResultSet rs = stmt.executeQuery(sql);
            //获取sql语句的预编译命令(安全性方面保障,防止sql注入)
            ps = conn.prepareStatement(sql);
            //预处理,为占位符填充具体值
            ps.setString(1, name);
            ps.setString(2, pwd);
            ResultSet rs = ps.executeQuery();
            if(rs.next()){
                System.out.println("登录成功!");
            }else{
                System.out.println("登录失败");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            try {
                if(ps != null){
                    ps.close();
                }
                if(conn != null){
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值