sql注入问题、PrepareStatement接口、JUnit单元测试、书写DButil工具类、DAO、连接池、批处理

1.sql注入
    在我们使用Statement进行登录验证时,
    用户输入用户名和密码查询是否登录成功,
    Statement对象可以通过拼接sql,
    然后改变sql的结构从而实现登录成功,
    这种情况我们称之为sql注入
2.如何避免?
    为了避免sql注入,
    我们不让用户进行sql拼接即可,
    而Statement这个类是可以让用户进行sql拼接的,
    所以我们不再使用该类
3.PrepareStatement 
          -- 是Statement这个类的子类
    1)支持预编译sql,将不完整的sql传入到数据库,
        将参数使用?占位(?的个数从1开始),
        然后再为?赋值即可
    2)不支持sql的拼接,不能改变sql的结构 --- 从而避免sql注入    
    3)当多次执行相同结构的sql时,效率比较高    
    4)常用方法
        ps.setXXX(index, 参数)
            为第index个?赋值为参数
        ps.executeQuery()
            获取结果集
        ps.getGeneratedKeys()
            获取主键值
4.JUnit单元测试:
    1)在单元测试的方法上加@Test注解
    2)点击@Test注解添加junitjar包
    3)书写方法public void 方法名(){}
5.书写DBUtil:
    工具类 -- 提供工厂方法
    获取连接
    关闭连接
6.DAO(Database Access Object):
        --数据库访问对象
        --就是用来对数据库中的表进行增删改查操作的
    如何使用DAO?
        1)建表
        2)建实体类     -- 与表一一对应
            成员变量 -- 字段
            JAVABEAN规范:
                a)该类要实现序列化接口
                b)该类属性私有化
                c)提供get/set方法
                d)提供无参构造
        3)为每一个实体类创建接口
        4)为每一个接口创建相应的实现类,
            在实现类中实现表的增删改查
        5)测试
7.连接池 :
          数据库连接池负责分配、管理和释放数据库连接,                                                                                                                                           它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;                                                                                                   释放  空闲时间超过最大空闲时间 的数据库连接,                                                                                                                                           来避免因为没有释放数据库连接而引起的数据库连接遗漏。                                                                                                                             这项技术能明显提高对数据库操作的性能。
    
8.批处理:
    一次执行多条语句
    批处理的方法:
        ps.addBatch()
        ps.executeBatch()
        ps.clearBatch()
    当我们在执行批处理时,要对事务进行手动管理:
    1)取消事务的自动提交
        conn.setAutoCommit(false);
    2)执行批处理以后手动提交事务
        conn.commit();
    3)如果出现异常,则事务回滚
        conn.rollback();    
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值