Java开发系列-JDBC

概述

JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序

JDBC连接数据库

导入MySQL数据库驱动jar包

代码编写

public void JDBCExample() throws ClassNotFoundException, SQLException{
    // 1.注册驱动
    Class.forName(driverClass);

    // 2.获取连接
    String url = "jdbc:mysql://localhost:3306/数据库名称";
    Connection connection = DriverManager.getConnection(url, user, password);

    // 3. 编写SQL语句
    String sql = "insert into category values(null, ?)";

    // 4.创建预编译
    PreparedStatement st = (PreparedStatement) connection.prepareStatement(sql);

    // 5. 设置参数 参数 第几个? 对应的value index是从1开始
    st.setString(1, "户外");

    // 6. 执行sql
   int row = st.executeUpdate();
    
   /* 
   ResultSet res = st.executeQuery();
  // 7. 处理结果
   while (res.next()) {
       System.out.println(res.getString("cname"));
    } 
    */

    // 8. 释放资源 (先打开后关闭)
    res.close(); 
    st.close();
    connection.close();
}

使用连接池改造JDBC的程序

Connection对象在JDBC使用的时候.使用的时候就会去创建一个对象,使用结束以后就会将这个对象给销毁了.每次创建和销毁对象都是耗时操作.需要使用连接池对其进行优化.程序初始化的时候,初始化多个连接,将多个连接放入到池中(内存中).每次获取的时候,都可以直接从连接池中进行获取.使用结束以后,将连接归还到池中.

常见的连接池 DBCP 、C3P0。

DBCP

DBCP是Apache组织一个java连接池项目,也是tomcat使用的连接池组件。单独使用JDBC需要导入2个jar包。由于建立数据库连接是一个非常耗费资源的行为,所以通过连接池预先与数据库建立一些连接放在内存中。应用程序需要建立数据库连接时直接到连接池中去申请连接,用完后再放入连接池。

代码编写

public void JDBCExample(){

    // 创建连接池
    BasicDataSource dataSource = new BasicDataSource();
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl(""):
    dataSource.setUsername("");
    dataSource.setPassword("");
    
    try{
    // 获得连接:
    conn = dataSource.getConnection();
    // 编写SQL语句.
    String sql = "insert into category values (null,?)";
    // 预编译SQL:
    pstmt = conn.prepareStatement(sql);
    // 设置参数:
    pstmt.setString(1, "鞋靴箱包");
    //执行SQL 
        pstmt.executeUpdate();
     }catch(Exception e)
        e.printStackTrace();
    }finally{
        JDBCUtils.release(pstmt, conn);
    }
}

C3P0

DButiils

猜你喜欢

转载自www.cnblogs.com/CoderHong/p/9465743.html