深圳建站公司一般需要多久,网络服务的工具,互联网时代,潜江做网站的公司方法1#xff1a;使用java.sql.DriverManager类驱动管理器类#xff0c;用于管理所有注册的驱动程序。(注#xff1a;DataSource 接口是 JDBC 2.0 API 中的新增内容#xff0c;它提供了连接到数据源的另一种方法。使用 DataSource 对象是连接到数据源的首选方法。)常用的两…方法1使用java.sql.DriverManager类驱动管理器类用于管理所有注册的驱动程序。(注DataSource 接口是 JDBC 2.0 API 中的新增内容它提供了连接到数据源的另一种方法。使用 DataSource 对象是连接到数据源的首选方法。)常用的两个APIregisterDriver(driver) : 注册驱动类对象ConnectiongetConnection(url,user,password); 获取连接对象Testpublic void test1(){Statement stmt null;Connection conn null;try {//1.驱动注册程序 --内部执行了RegisterDriverClass.forName(com.mysql.jdbc.Driver);//2.获取连接对象conn DriverManager.getConnection(url, user, password);//3.创建Statementstmt conn.createStatement();//4.准备sqlString 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);}}}方法2使用实现了javax.sql.DataSource接口的子类javax.sql.DataSource接口包名javax.sql接口名 DataSource作为 DriverManager 工具的替代项DataSource 对象是获取连接的首选方法。DataSource接口由驱动程序供应商实现。共有三种类型的实现1. 基本实现 - 生成标准的 Connection 对象2. 连接池实现 - 生成自动参与连接池的 Connection 对象。此实现与中间层连接池管理器一起使用。3. 分布式事务实现 - 生成一个 Connection 对象该对象可用于分布式事务大多数情况下总是参与连接池。此实现与中间层事务管理器一起使用大多数情况下总是与连接池管理器一起使用。自己实现DataSource子类这种方法不常用常用的方法可以参考方法3和方法4插入一句Sun公司约定如果是连接池技术都需要实现javax.sql.DataSource接口方法3DBCP连接池DBCP 是 Apache 软件基金组织下的开源连接池实现使用DBCP数据源应用程序应在系统中增加如下两个 jar 文件Commons-dbcp.jar连接池的实现Commons-pool.jar连接池实现的依赖库Tomcat 的连接池正是采用该连接池来实现的。该数据库连接池既可以与应用服务器整合使用也可由应用程序独立使用。核心类BasicDataSource包名org.apache.commons.dbcp类名ClassBasicDataSource extends Object implements DataSourceBasicimplementation of javax.sql.DataSource that is configured viaJavaBeansproperties. This is not the only way to combine thecommons-dbcp andcommons-pool packages, but provides a one stopshopping solutionfor basic requirements.2. 两种方式实现连接池1)硬编码方式2)配置方式public class App_DBCP {// 1. 硬编码方式实现连接池Testpublic 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 id3).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 id4).executeUpdate();// 关闭con.close();}}配置方式实现DBCP连接池 配置文件中的key与BaseDataSouce中的属性一样db.propertiesurljdbc:mysql:///jdbc_demodriverClassNamecom.mysql.jdbc.DriverusernamerootpasswordrootinitialSize3maxActive6方法4C3P0连接池C3P0连接池最常用的连接池技术Spring框架默认支持C3P0连接池技术C3P0连接池核心类CombopooledDataSource ds;包名com.mchange.v2.c3p0类名ClassComboPooledDataSource implementsPooledDataSource implements DataSource使用1. 下载引入jar文件: c3p0-0.9.1.2.jar2. 使用连接池创建连接a) 硬编码方式b) 配置方式(xml)自动加载src下c3p0的配置文件【c3p0-config.xml】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 id7).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 id5).executeUpdate();// 关闭con.close();}}总结DataSource 接口是 JDBC 2.0 API 中的新增内容它提供了连接到数据源的另一种方法。使用 DataSource 对象是连接到数据源的首选方法。DataSource比DriverManager好在哪里呢1. DataSource创建的connection既有基本实现也有连接池实现(可以复用DataSource帮我们实现了复用机制)而DriverManager创建的connection则不能复用(当然自己写连接池自己来实现复用机制也是可以的可以参考使用动态代理实现自定义连接池)。所以sun公司规定连接池技术需要实现DataSource接口。2. DataSource中封装了DriverManager的使用使用DataSource的一个好处是可以在外边配置(如C3P0直接修改xml文件不用自己写配置文件db.properties)。3. 配置DataSource由容器来获取Connection并结合连接池的应用比直接使用DriverManager操作JDBC效率高一些(参考DBCP vs DriverManage效率)。