预处理 PreparedStatement和JDBC API

本次博客带领大家学习JDBC中的预处理 PreparedStatement 的查询和DML的使用和JDBC API。

预处理 PreparedStatement的基本介绍

  1. PreparedStatement 对象执行的SQL语句中的参数用问号(?)来表示,调用PreparedStatement 对象的 setXXX()方法来设置这些参数,setXXX()方法有两个参数,第一个参数是要设置的SQL语句中的参数的索引(从1开始),第二个是设置的SQL语句中的参数的值。
  2. 调用 executeQuery(),返回 ResultSet对象。
  3. 调用 executeUpdate(),执行更新,包括增、删、修改。

预处理 PreparedStatement的好处

  1. 不再使用 + 拼接sql语句,减少语法错误。
  2. 有效的解决了sql注入问题!
  3. 大大减少了编译次数,效率较高。

预处理查询操作

  • 预处理查询可以有效的解决了sql注入问题。
 public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入管理员的名字:");
        String admin_name =scanner.nextLine();
        System.out.println("请输入管理员的密码");
        String admin_pwd=scanner.nextLine();
        Properties properties = new Properties();
        properties.load(new FileInputStream("src\\mysql.properites"));
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String driver = properties.getProperty("driver");
        String url = properties.getProperty("url");
        Class.forName(driver);
        Connection connection = DriverManager.getConnection(url, user, password);

        // 得到PrepareStatement
        //组织SQL,sql 语句的? 就相当于占位符
        String sql = "select name,pwd from admin where name =? and pwd =?";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        // 给?赋值
        preparedStatement.setString(1,admin_name);
        preparedStatement.setString(2,admin_pwd);

        ResultSet resultSet = preparedStatement.executeQuery();
        if(resultSet.next()){
            System.out.println("恭喜登录成功!");
        }else{
            System.out.println("对不起,登陆失败");
        }
        resultSet.close();
        preparedStatement.close();
        connection.close();
    }

预处理的DML操作

public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入添加的名字");
        String admin_name =scanner.nextLine();
        System.out.println("请输入添加的密码");
        String admin_pwd=scanner.nextLine();
        Properties properties = new Properties();
        properties.load(new FileInputStream("src\\mysql.properites"));
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        String driver = properties.getProperty("driver");
        String url = properties.getProperty("url");
        Class.forName(driver);
        Connection connection = DriverManager.getConnection(url, user, password);

        // 得到PrepareStatement
        //组织SQL,sql 语句的? 就相当于占位符
        //添加记录
        String sql = "insert into admin VALUES(?,?)";
        //修改记录
        String sql = "UPDATE admin set pwd=? where name=?";
        //删除记录
        String sql = "DELETE from admin where name = ?";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        // 给?赋值
        preparedStatement.setString(1,admin_name);

        int row = preparedStatement.executeUpdate();
        if(row > 0){
            System.out.println("修改成功!");
        }else{
            System.out.println("修改失败!");
        }
        preparedStatement.close();
        connection.close();
    }

JDBC API

请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值