四种连接数据库的方式
《四种连接数据库的方式》由会员分享,可在线阅读,更多相关《四种连接数据库的方式(7页珍藏版)》请在装配图网上搜索。
1、四种连接数据库的方法(DriverManager、DataSource子类、DBCP、c3p0)2010-04-0720:58:40|分类:JAVA基础|字号订阅一、环境1、数据库驱动jar文件2、DBCP方法Commons-dbcp.jar:连接池的实现Commons-pool.jar:连接池实现的依赖库资源文件3、c3p0方法:c3p0-0.9.1.2.jar配置文件:c3p0-config.xml二、连接操作1. DriverManager方法;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQ
2、LException;publicclassDBConnectionprivatestaticStringdriverClass=com.mysql.jdbc.DriverprivatestaticStringurl=jdbc:mysql:/localhost:3306/test;privatestaticStringusername=root;privatestaticStringpassword=123456;privatestaticConnectionconn=null;statictry/注册驱动/不要把conn=DriverManager.getConnection(url,use
3、rname,password);放在这里。防止所有用户都用一个ConnectionClass.forName(driverClass);catch(Exceptione)thrownewRuntimeException(e);publicstaticConnectiongetConnection()throwsSQLExceptionconn=DriverManager.getConnection(url,username,password);returnconn;使用DataSource子类方法;资源文件DBConnection.propertiesdriverClass=com.mysql
4、.jdbc.Driverurl=jdbc:mysql:localhost:3306/testusername=rootpassword=123456模拟数据连接池DataSourcePool.javapackagecn.langzi.jdbc.DataSource;importjava.ionputStream;importjava.io.PrintWriter;importjava.Iang.reflect.InvocationHandler;importjava.Iang.reflect.Method;importjava.Iang.reflect.Proxy;importjava.sql
5、.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.util.LinkedList;importjava.util.Properties;importjavax.sql.DataSource;importjavax.sql.DataSource;publicclassDataSourcePoolimplementsDataSourceprivatestaticStringurl=nullprivatestaticStringusername=null;privatestaticStrin
6、gpassword=null;privatestaticintsize=10;privatestaticLinkedListlist=newLinkedList();statictryInputStreamin=DataSourcePool.class.getClassLoader().getResourceAsStream(”cn/langzi/jdbc/DataSource/DBConnection.properties);Propertiesprop=newProperties();prop.load(in);Class.forName(prop.getProperty(driverCl
7、ass);url=prop.getProperty(”url);username=prop.getProperty(username);password=prop.getProperty(password);catch(Exceptione)thrownewExceptionlnlnitializerError(e);privatestaticDataSourcePoolpool=newDataSourcePool();/创建对象就初始化size个数据库连接privateDataSourcePool()for(inti=0;i0)/取到连接,即从list中弹出一个Connection连接fin
8、alConnectionconn=list.pop();/动态代理,返回一个代理对象return(Connection)Proxy.newProxyInstance(DataSourcePool.class.getClassLoade(),conn.getClass().getlnterfaces(),newlnvocationHandler()publicObjectinvoke(Objectproxy,Methodmethod,Objectargs)throwsThrowable/如果Connection调用的是close方法就将连接返回给数据连接池if(method.getName().
9、equals(”close)list.push(conn);returnnull;returnmethodnvoke(conn,args););/连接用完thrownewRuntimeException(”对不起,服务器繁忙!);OverridepublicConnectiongetConnection(Stringusername,Stringpassword)throwsSQLException/TODOAuto-generatedmethodstubreturnnull;OverridepublicPrintWritergetLogWriter()throwsSQLException/T
10、ODOAuto-generatedmethodstubreturnnull;OverridepublicintgetLoginTimeout()throwsSQLException/TODOAuto-generatedmethodstubreturn0;OverridepublicvoidsetLogWriter(PrintWriterout)throwsSQLException/TODOAuto-generatedmethodstubOverridepublicvoidsetLoginTimeout(intseconds)throwsSQLException/TODOAuto-generat
11、edmethodstubOverridepublicbooleanisWrapperFor(Classiface)throwsSQLException/TODOAuto-generatedmethodstubreturnfalse;OverridepublicTunwrap(Classiface)throwsSQLException/TODOAuto-generatedmethodstubreturnnull;packagecn.langzi.jdbc.DataSource;importjava.sql.Connection;importjava.sql.SQLException;public
12、classDBConnectionpublicstaticConnectiongetConnection()throwsSQLExceptionConnectionconn=DataSourcePool.getlnstance().getConnection();returnconn;DBCPJ法:资源文件:dbcpconfig.propertiesdriverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql:localhost:3306/testusername=rootpassword=123456initialSize=10maxActive=5
13、0maxldle=20minldle=5maxWait=60000连接数据库:packagecn.langzi.jdbc.DBCP;importjava.io.10Exception;importjava.io.InputStream;importjava.sql.Connection;importjava.sql.SQLException;importjava.util.Properties;importjavax.sql.DataSource;mons.dbcp.BasicDataSourceFactory;publicclassDBConnectionprivatestaticDataS
14、ourcedataSource=null;statictry/获取资源文件InputStreamin=cn/langzi/jdDBConnection.class.getClassLoader().getResourceAsStream(”bc/DBCP/dbcpconfig.properties);Propertiesproperties=newProperties();/加载资源文件properties.load(in);/建立数据工厂BasicDataSourceFactorydataSourceFactory=newBasicDataSourceFactory();dataSource
15、=dataSourceFactory.createDataSource(properties);catch(Exceptione)/TODOAuto-generatedcatchblocke.printStackTrace();publicstaticConnectiongetConnection()throwsSQLExceptionreturndataSource.getConnection();c3p0方法:配置文件:c3p0-config.xmlv?xmlversion=1.0encoding=UTF-8?com.mysql.jdbc.Driverjdbc:mysql:localhos
16、t:3306/testroot123456510102005vuser-overridesuser=master-of-the-universevpropertyname=acquireIncrement1vpropertyname=initialPoolSize11550连接数据库:packagecnangzi.jdbc.c3p0;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjavax.sql.DataSource;importcom.mchange.v2.c3p0.ComboPooledDataSource;publicclassDbConnectionprivatestaticDataSourcedataSource;staticdataSource=newComboPooledDataSource(”userApp);publicstaticConnectiongetConnectioon()throwsSQLExceptionreturndataSource.getConnection();
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。