Java 使用JDBC、DBCP、C3P0访问数据库

来源:互联网 发布:装系统需要网络吗 编辑:程序博客网 时间:2024/05/16 09:04

JDBC

@Test      public void test1(){          Statement stmt = null;          Connection conn = null;          try {              //1.驱动注册程序  --内部执行了RegisterDriver              Class.forName("com.mysql.jdbc.Driver");              //2.获取连接对象              conn = DriverManager.getConnection(url, user, password);              //3.创建Statement              stmt = conn.createStatement();              //4.准备sql              String sql = "CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),gender VARCHAR(2))";              //5.发送sql语句,执行sql语句,得到返回结果              int count = stmt.executeUpdate(sql);              //6.输出              System.out.println("影响了"+count+"行!");          } catch (Exception e) {              e.printStackTrace();              throw new RuntimeException(e);          } finally{              //7.关闭连接(顺序:后打开的先关闭)              if(stmt!=null)                  try {                      stmt.close();                  } catch (SQLException e) {                      e.printStackTrace();                      throw new RuntimeException(e);                  }              if(conn!=null)                  try {                      conn.close();                  } catch (SQLException e) {                      e.printStackTrace();                      throw new RuntimeException(e);                  }          }      }  

DBCP

public class App_DBCP {      // 1. 硬编码方式实现连接池      @Test      public void testDbcp() throws Exception {          // DBCP连接池核心类          BasicDataSource dataSouce = new BasicDataSource();          // 连接池参数配置:初始化连接数、最大连接数 / 连接字符串、驱动、用户、密码          dataSouce.setUrl("jdbc:mysql:///jdbc_demo");        //数据库连接字符串          dataSouce.setDriverClassName("com.mysql.jdbc.Driver");  //数据库驱动          dataSouce.setUsername("root");                          //数据库连接用户          dataSouce.setPassword("root");                          //数据库连接密码          dataSouce.setInitialSize(3);  // 初始化连接          dataSouce.setMaxActive(6);    // 最大连接          // 获取连接          Connection con = dataSouce.getConnection();          con.prepareStatement("delete from admin where id=3").executeUpdate();          // 关闭          con.close();      }      @Test      // 2. 【推荐】配置方式实现连接池,  便于维护      public void testProp() throws Exception {          // 加载prop配置文件          Properties prop = new Properties();          // 获取文件流          InputStream inStream = App_DBCP.class.getResourceAsStream("db.properties");          // 加载属性配置文件          prop.load(inStream);          // 根据prop配置,直接创建数据源对象          DataSource dataSouce = BasicDataSourceFactory.createDataSource(prop);          // 获取连接          Connection con = dataSouce.getConnection();          con.prepareStatement("delete from admin where id=4").executeUpdate();          // 关闭          con.close();      }  }  

配置文件:

url=jdbc:mysql:///jdbc_demodriverClassName=com.mysql.jdbc.Driverusername=rootpassword=rootinitialSize=3maxActive=6

C3P0

public class App {      @Test      //1. 硬编码方式,使用C3P0连接池管理连接      public void testCode() throws Exception {          // 创建连接池核心工具类          ComboPooledDataSource dataSource = new ComboPooledDataSource();          // 设置连接参数:url、驱动、用户密码、初始连接数、最大连接数          dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/jdbc_demo");          dataSource.setDriverClass("com.mysql.jdbc.Driver");          dataSource.setUser("root");          dataSource.setPassword("root");          dataSource.setInitialPoolSize(3);          dataSource.setMaxPoolSize(6);          dataSource.setMaxIdleTime(1000);          // ---> 从连接池对象中,获取连接对象          Connection con = dataSource.getConnection();          // 执行更新          con.prepareStatement("delete from admin where id=7").executeUpdate();          // 关闭          con.close();      }      @Test      //2. XML配置方式,使用C3P0连接池管理连接      public void testXML() throws Exception {          // 创建c3p0连接池核心工具类          // 自动加载src下c3p0的配置文件【c3p0-config.xml】          ComboPooledDataSource dataSource = new ComboPooledDataSource();// 使用默认的配置          // 获取连接          Connection con = dataSource.getConnection();          // 执行更新          con.prepareStatement("delete from admin where id=5").executeUpdate();          // 关闭          con.close();      }  }  
原创粉丝点击