• JDBC(4)—Preparedstatement


    • 功能:使用PreparedStatement操作数据表,其功能与Statement一致,但为何要使用PreparedStatement呢。
      • 一、原因:
      • 1.使用sql语句进行操作数据表时,需要拼写sql语句,在拼写时容易出错,且不易排查,所以使用PreparedStatement
        *操作数据表时,降低sql语句的拼写难度,简化拼写sql语句的步骤,提高代码的可维护性和可读性。
      • 2.同时还可以有效的防SQL注入。
        *SQL注入:利用某些系统没有对用户输入的数据进行充分的检查,而而在用户中注入非法的SQL语句段或命令从而利用系统的SQL引擎
        *完成恶意操作。
        例如:select from user where username = ‘a’ OR PASSWORD = ’ and password = ’ OR ‘1’ = ‘1’
        *即使不知道账号密码,却可以登录成功。
      • 3.PerparedStatement能够最大可能的提高性能
      • 二、 介绍:PreparedStatement是Statement的子接口,可以传入带占位符的sql语句,也提供了补充占位符变量的方法。
      • 三、操作:向数据表中插入一条Student记录
    • 步骤:

      • 1.sql = “insert into examStudent values (?,?,?,?,?,?)”;其中?表示:占位符
      • 2.获取连接Connection
      • 3.创建PreparedStatement ps = conn.preparedStatement(sql);
      • 4.调用PreparedStatement的setXxx(int index,Object value);设置占位符的值
        *其中索引值index从1开始。
      • 5.执行sql语句,使用executeQuery()方法进行查询和executeUpdate()方法进行更新,执行时也不需要传入sql语句。
      • 6.关闭连接
    • 实例

    //插入一条记录
    @Test
        public void test(){
            //1.sql语句
            String sql = "insert into customers(name,age,birth,address) values(?,?,?,?)";
            Connection conn = null;
            PreparedStatement ps = null;
            try {
                //2.连接
                conn = TestTools.getConnection();
                //3.获取PerparedStatement对象
                ps = conn.prepareStatement(sql); 
                //4.PreparedStatement对象调用setXxx()方法,设置占位符的值
                ps.setString(1, "张强");
                ps.setString(2, "32");
                ps.setDate(3, new Date(new java.util.Date().getTime()));
                ps.setString(4, "河南省");
                //5.执行sql语句
                ps.executeUpdate();
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                //6.关闭连接
                TestTools.release(ps, conn);
            }
        }
    
  • 相关阅读:
    yzm10铺瓷砖 yzm10原创系列
    如何统计博客园的个人博客访问量
    Hybrid设计--账号体系的建设
    Hybrid设计--核心交互
    Hybrid设计--H5和Native,收口
    MySQL数据类型--与MySQL零距离接触 3-2 外键约束的要求解析
    MySQL数据类型--与MySQL零距离接触2-14MySQL默认约束
    css3径向渐变
    MySQL数据类型--与MySQL零距离接触2-13MySQL唯一约束
    MySQL数据类型--与MySQL零距离接触2-12主键约束
  • 原文地址:https://www.cnblogs.com/tengpengfei/p/10454021.html
Copyright © 2020-2023  润新知