Java之MySQL中prepareStatement的基本使用

1.什么是prepareStatement

  1. prepareStatement是表示预编译的 SQL 语句的对象。

2.为什么使用prepareStatement

1.以前的statement的执行,是先拼接sql语句然后在一起执行。在这种情况下,如果sql语句中的变量带有了数据库的关键字,那么一并认为是是关键字,而不是普通的字符串。
2.使用prepareStatement时,预先处理给定的SQL语句并且对其进行语法检查,在SQL语句中使用?作为占位符来替代后续传进来的变量,后面进来的变量将会被看成是字符串而不会产生任何的关键字。

3.基本语法

  1. 使用statement
public void login(String username,int password) {
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        PreparedStatement ps = null;
        try{
            conn = JDBCUtil.getConn();
            st = conn.createStatement();
            String sql = "select * from student where name='"+username+"' and age = '"+password+"'";
            rs = st.executeQuery(sql);
            if(rs.next()){
                String name = rs.getString("name");
                int age = rs.getInt("age");
                System.out.println("name = "+username+" age = "+password);
                System.out.println("登录成功");
            }else{
                System.out.println("登陆失败");
            }
        }catch (Exception e){
            System.out.println("异常,登陆失败");
            e.printStackTrace();
        }
  1. 使用 prepareStatement
public void login(String username,int password) {
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        PreparedStatement ps = null;
        try{
            conn = JDBCUtil.getConn();
            String sql = "select * from student where name = ? and age = ?";
            ps = conn.prepareStatement(sql);
            ps.setString(1,username);
            ps.setInt(2,password);
            rs = ps.executeQuery();
            if(rs.next()){
                String name = rs.getString("name");
                int age = rs.getInt("age");
                System.out.println("name = "+username+" age = "+password);
                System.out.println("登录成功");
            }else{
                System.out.println("登陆失败");
            }
        }catch (Exception e){
            System.out.println("异常,登陆失败");
            e.printStackTrace();
        }
  1. 这是一个传入两个参数的login方法,使用此方法当“username”和“password”两个参数和数据库中的值一样时则输出“登录成功”否则为“登录失败”。不同之处在于对传入参数的处理,使用statement时直接把参数写进SQL语句中然后处理。而preparestatement处理时用?作为占位符,然后再对传入的数据进行处理。
发布了7 篇原创文章 · 获赞 16 · 访问量 2906

猜你喜欢

转载自blog.csdn.net/qq_45920729/article/details/104385037