复习:

1、JDBC使用的1个准备、6个步骤
2、executeUpdate
    执行 增删改 SQL语句。
    有1个参数,代表 要执行的SQL语句。
    有返回值,是int类型,代表影响的行数。
3、executeQuery
    执行 查询语句。
    有1个参数,代表 要执行的select语句。
    有返回值,是ResultSet类型,代表 查询到的结果(虚表)。
4、对结果集的使用
    while(rs.next()){
        // 获取字段值
        rs.getXxx("字段名")
        rs.getXxx(1...)
    }
    


一、执行带参数的SQL语句
    1、使用Statement执行带参SQL【了解】
        缺点:1) 需要拼接SQL语句,可读性差,并且需要考虑数据类型,是字符串类型需要有‘’单引号;
                    2) 存在SQL注入的 安全隐患
                    
    2、使用 PreparedStatement 执行带参SQL【重点】
        PreparedStatement 是 Statement 的子接口。
        
        // 3 创建PreparedStatement
        String sql = "insert into 表名 values(seq.nexval, ?, ? ,?)";
        PreparedStatement pstm = conn.prepareStatement(sql);//创建pstm时使用SQL
        
        // 4 给?占位符设值,并且执行SQL语句
        pstm.setXxx(1, val);
        pstm.setXxx(2, val2);
        pstm.setXxx(3, val3);
        int row = pstm.executeUpdate();//执行时,不需要SQL
    
 小结:Statement 和 PreparedStatement的区别
        --------------------------------------------------------------------------------------------------------
                        Statement                                              PreparedStatement
        --------------------------------------------------------------------------------------------------------
        语法:  stm=conn.createStatement();                     String sql="insert ... ?...";
                                                                                      pstm = conn.prepareStatement(sql);
                    String sql = "insert....";                                pstm.setXxx(1, val);
                    stm.executeUpdate(sql);                              pstm.executeUpdate();
        --------------------------------------------------------------------------------------------------------
        安全:        存在SQL注入隐患                                    安全,解决了SQL注入的隐患
        --------------------------------------------------------------------------------------------------------
        性能:        相对低                                                    相对高
        --------------------------------------------------------------------------------------------------------
        SQL的结构:    异构SQL                                            同构SQL
        --------------------------------------------------------------------------------------------------------
    
二、批处理
    借助于 减少 client和DBserver的交互,提高效率。
    
    //往批缓存中 添加sql语句
    stm.addBatch(sql);
    
    //向server发送执行批处理的请求
    int[] rows = stm.executeBatch();
    
    注意:批处理的SQL语句,不允许是select!!
    
三、execute【了解】
    作用:可以执行所有的SQL语句,包括 insert/update/delete/select/create table...
    返回值:boolean -如果第1个SQL如果是select,则返回true;否则 返回false.
    
四、日期的处理【重点】
            DB的数据类型                JAVA的数据类型
            number(10)                     int
            number(10,2)                  double
            varchar2(10)                    String
            char(1)                            String
            date                                java.sql.Date【重点】
    
    // 插入日期类型的数据
    // String strDate --> java.util.Date utilDate 

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
utilDate = sdf.parse(strDate);

    // java.util.Date --> java.sql.Date    sqlDate

sqlDate = new java.sql.Date(utilDate.getTime());