JDBC

Posted govzhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC相关的知识,希望对你有一定的参考价值。

JDBC
什么是JDBC:
            是用于执行SQL语句的java API
什么是数据库驱动
            驱动:两个设备(应用)之间通信的桥梁。
 
入门: (步骤)
1.首先创建数据库和表
2.引入JAR包  
3.代码实现:
第一步:加载驱动     Class.forName("com.mysql.jdbc.Driver");
第二步:获得连接    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库", "账户", "密码");
第三步:基本操作    (获得对象--编写语句--执行语句)
                获得对象:    createStatement()
                编写语句:    String sql = "select * from user";
                执行语句: ResultSet executeQuery(String sql);
                              执行查询(执行select语句)。
                              int executeUpate(String sql);    
                              执行修改,添加,删除的SQL语句
                遍历语句:    rs.next()                
第四步:释放资源   rs.close();
固定格式:
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库", "账户", "密码");
@Test    
    public void demo1() throws Exception{
        // 1.加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        // 2.获得连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/web_test3", "root", "abc");
        //执行SQL
        // 3.1获得执行SQL语句的对象
        Statement statement = conn.createStatement();
        // 3.2编写SQL语句:
        String sql = "select * from user";
        // 3.3执行SQL:
        ResultSet rs = statement.executeQuery(sql);
        // 3.4遍历结果集:
        while(rs.next()){
            System.out.print(rs.getInt("id")+" ");
            System.out.print(rs.getString("username")+" ");
            System.out.print(rs.getString("password")+" ");
            System.out.print(rs.getString("nickname")+" ");
            System.out.print(rs.getInt("age"));
            System.out.println();
        }
        // 4.释放资源
        rs.close();
        statement.close();
        conn.close();

 

连接池的概述:
        连接池是装有连接的容器,使用连接的话,可以从连接池中进行获取,使用完成之后将连接归还给连接池。
 
连接池的原理:
技术分享图片
将原有的连接的close方法改为归还。
        现在要做的事情就是将原有的close方法的逻辑改为归还。(增强一个类中的方法)。
 
如何增强一个类中的方法
            一种:采用继承的方式:
      继承这种增强是最简单,但是是有使用条件的:必须能够控制这个类的构造!!!
   
   二种:采用装饰者模式:
      装饰者模式使用条件:
       * 一、增强的类和被增强的类实现相同的接口
       * 二、在增强的类中获得被增强的类的引用
     
       三种 :  动态代理的方式 
C3P0连接池的使用:    
            手动设置参数的方式:
@Test
    /**
     * 手动设置参数的方式:
     */
    public void demo1(){
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try{
            // 获得连接:从连接池中获取:
            // 创建连接池:
            ComboPooledDataSource dataSource = new ComboPooledDataSource();
            // 设置连接参数:
            dataSource.setDriverClass("com.mysql.jdbc.Driver");
            dataSource.setJdbcUrl("jdbc:mysql:///web_test4");
            dataSource.setUser("root");
            dataSource.setPassword("abc");
            // 从连接池中获得连接:
            conn = dataSource.getConnection();
            // 编写SQL:
            String sql = "select * from account";
            // 预编译SQL:
            pstmt = conn.prepareStatement(sql);
            // 执行SQL:
            rs = pstmt.executeQuery();
            while(rs.next()){
                System.out.println(rs.getInt("id")+" "+rs.getString("name")+" "+rs.getDouble("money"));
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            JDBCUtils.release(rs, pstmt, conn);
        }
    }
    采用配置文件的方式:
  配置:
技术分享图片
 

以上是关于JDBC的主要内容,如果未能解决你的问题,请参考以下文章

面试常用的代码片段

mysql jdbc源码分析片段 和 Tomcat's JDBC Pool

JDBC操作数据库之查询数据

如何在片段中填充列表视图?

在 myeclipse中进行连接sql server的测试

MYBATIS05_ifwherechoosewhentrimsetforEach标签sql片段