JDBC系列之一_JDBC

6 篇文章 0 订阅
4 篇文章 0 订阅
JDBC:
---->六步实现java程序对数据库的操作
---->为了简化六步,出现JDBCUtils
---->为了提高并发访问效率,出现连接池Druid/c3p0,可以直接从连接池获得Connection,并且这个时候对Connection的进行了装饰,返回的Connection自带连接池引用,close()方法自动归还连接到连接池,
----->由于连接池技术的出现,它本身也封装了创建连接的步骤,所有我们可以利用这一点,在JDBCUtils中加以利用,这样就有了        利用连接池,改写JDBCUtils类,使JDBCUtils更加强大;    
---->为了简化对结果集ResultSet的数据封装,出现了DBUtils,它直接对Connection /或者DataSource 操作;DBUtils核心类QueryRunner,用于sql操作,ResultSetHandler(结果集处理器)用于对数据进行封装;

1.JDBC规定了java程序在访问数据库时的操作流程:
流程一:

a.注册驱动----->b.创建连接---->c.编写sql语句---->d.创建sql语句执行对象

---->e.执行sql语句---->f.处理结果集---->g.释放资源

示例:
        // 注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        // 创建连接
        DriverManager.getConnection("jdbc:mysql://localhost:3306/database1","root","123");
        // 创建sql语句执行对象
        stmt = conn.createStatement();
        // 编写sql语句
        String sql = "select * from account";
        //执行sql语句
        rs = stmt.executeQuery(sql);
        //处理结果集
        while (rs.next()) {
            System.out.println(rs.getInt("id")+"  "+
            rs.getString("name")+" "+rs.getInt("money"));
        }
流程二:为了防止注入式攻击
a.注册驱动----->b.创建连接---->c.编写sql语句---->d.预编译sql语句
    ---->e.替换sql中的?---->f.执行sql语句---->g.处理结果集---->h.释放资源
示例:
        // 注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        // 创建连接
        DriverManager.getConnection("jdbc:mysql://localhost:3306/database1","root","123");
        //编写sql语句
        String sql = "select * from account where id = ?";
        //预编译sql语句,获得PreparedStatement对象
        pstmt = conn.prepareStatement(sql);
        //传入参数
        pstmt.setInt(1, 1);
        //执行
        rs = pstmt.executeQuery();
        if (rs.next()) {
            System.out.println(rs.getInt("id")+"  "+
        rs.getString("name")+" "+rs.getInt("money"));
        }
        
 ========================以下个人总结=====================
 个人总结:  
JDBC本身是SUN定义了一系列接口,然后各个数据库供应商实现,这样做的好处是,我们Java程序员可以面向接口编程,只需要按Sun公司JDBC中的规定去操作
数据库,在不知道是针对哪个数据库操作的情况下,仍可以实现想要的CRUD,因为数据库供应商也是按照Sun公司JDBC中定义的接口去实现的;程序员按照
JDBC的规定去写程序,自然各个数据库都认识.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值