java数据库连接方法.pdf

上传人:索**** 文档编号:76246374 上传时间:2023-03-08 格式:PDF 页数:7 大小:55.53KB
返回 下载 相关 举报
java数据库连接方法.pdf_第1页
第1页 / 共7页
java数据库连接方法.pdf_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《java数据库连接方法.pdf》由会员分享,可在线阅读,更多相关《java数据库连接方法.pdf(7页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、一、问题引入在 java 程序中,需要访问数据库,做增删改查等相关操作。如何访问数据库,做数据库的相关操作呢?二、Java 连接数据库方法概述java.sql提供了一些接口和类,用于支持数据库增删改查等相关的操作。该jar包定义了 java 访问各种不同数据库(mysql,oracle,sqlserver。)的统一接口和标准。同时,各个数据库厂商都提供了该jar包中定义的各个接口的实现类,用于具体实现本厂数据库的增删改查操作,即称之为“数据库驱动jdbc driver”。例如mysql 的数据库驱动为:com.mysql.jdbc.driver;oracle的数据库驱动为:oracle.jdb

2、c.driver.oracledriver。在 java 程序中访问数据库,做数据库连接时,可以采用两种方式:1、使用 java.sql API 利用该包提供的各种接口和类直接访问数据库。例子:2、使用数据库连接池目前存在多个开源的java 数据库连接池,这些连接池都是在java.sql基础上编写而成。该连接池的解决的问题是:当使用 java.sql中提供的 api 创建数据库连接时候,需要耗费很大的资源,要进行用户名密码数据库连接验证等,即耗费资源也耗费时间。如果在程序中,每次需要访问数据库时候,都进行数据库连接,那么势必会造成性能低下;同时,如果用户失误忘记释放数据库连接,会导致资源的浪费

3、等。而数据库连接池就是解决该问题,通过管理连接池中的多个连接对象(connection),实现 connection重复利用。从而,大大提高了数据库连接方面的性能。该连接池的功能是:负责创建,管理,释放,分配数据库连接即(connection)。首先,负责创建相应数目的数据库连接对象(connection)对象,并存放到数据库连接池(connect pool)中。当用户请求数据库连接时,该连接池负责分配某个处于空闲状态的数据库连接对象;当用户发出释放该数据库连接时,该连接池负责将该连接对象重新设置为空Drivermanager(驱动管理类)Connection(连接类)Statement(静态

4、语句)Preparedstatement(动态)resultset resultset 闲状态,以便被别的请求重复利用。同时;数据库连接池负责检查(空闲时间最大空闲时间)的数据库连接,并释放。连接池主要参数介绍最小连接数:初始化时,系统将负责创建该数目的connection放入连接池中。最大连接数:系统允许创建connection的最大数值。当系统请求连接时候,且连接池中不存在空闲的连接:如果connection总数未超过最大连接数,那么连接池负责创建新的connection对象,并返回该对象;如果 connection总数已经到达该最大连接数,那么连接池将用户请求转入等待队列。三、常用的数据

5、库连接池1、JNDI 2、C3p0 3、Apache 的 Jakarta DBCP 4、BoneCP 其中,sping 框架依赖的第三方使用了c3p0 和 dbcp 两种方式;而bonecp 号称是速度最 快 的 数 据 库 连 接 池。JNDI方 式 创 建 实 现 的datasource是 真 正 实 现 了javax.sql.datasource;其他的三种方式都不是。下面的列表,列出了几种方式的区别和不同:序号连接池名称依赖的 jar包实现的datasource类备注1 JNDI 该数据源是由相应的web 服务器(例如:tomcat,weblogic,websphere)负责初始化,创

6、建,管理。程序中不需要引入特别的jar包。Javax.sql.datasource 2 C3P0 c3p0-0.9.xxx.jarcom.mchange.v2.c3p0.ComboPooledDataSource 3 DBCP commons-dbcp.jar,commons-pool.jar mons.dbcp.BasicDataSource 4 BoneCP bonecp-0.6.5.jar google-collections-1.0.jar slf4j-api-1.5.11.jar slf4j-log4j12-1.5.11.jar log4j-1.2.15.jar BoneCPData

7、Source 备注:以上几种方式的数据库连接池的配置参数大同小异,略有差别;其参数的配置,既可以通过配置文件的方式配置,也可以通过硬编码的方式配置。四、分别列出几种连接池的编码例子(所有的例子均可以参考D:workqsyworkspace2jdbctest项目)1、使用 java.sql API直接访问数据库详细请参考javasql.java文件。Class.forName(com.mysql.jdbc.Driver);String url=jdbc:mysql:/localhost:3306/editortest;String user=root;String password=123456

8、;Connection cn=DriverManager.getConnection(url,user,password);Statement st=cn.createStatement();String sql=select*from artical where id=1;ResultSet rs=st.executeQuery(sql);while(rs.next()System.out.println(1:+rs.getString(1);System.out.println(2:+rs.getString(2);System.out.println(3:+rs.getString(3)

9、;System.out.println(4:+rs.getString(4);2、使用 JNDI 方式这种方式,是由web服务器,实现了java.sql.datasource。由 web 服务器负责初始化数据源,创建connection,分配,管理connection。由于本身是由web服务器实现的功能,因此不需要在项目project中引入特别的jar包,但是需要在服务器的某些配置文件中增加相关的配置。下面,以tomcat 服务器为例,讲述这种方式的使用。(1)、修改 tomcat 的 conf 下的 context.xml文件,增加Resource 的配置的支持。(2)、由于数据源是由tom

10、cat 负责创建,所以需要的jdbc 驱动应该放到tomcat 的 lib路径下。(3)、编写使用java 代码,并放在tomcat 环境下使用,如下:publicvoid jnditest()/TODO Auto-generated method stubtry Context initcontext=new InitialContext();Context context=(Context)initcontext.lookup(java:comp/env);DataSource datasource=(DataSource)context.lookup(jdbc/editortest);C

11、onnection cn=datasource.getConnection();Statement st=cn.createStatement();String sql=select*from artical where id=1;ResultSet rs=st.executeQuery(sql);while(rs.next()System.out.println(1:+rs.getString(1);System.out.println(2:+rs.getString(2);System.out.println(3:+rs.getString(3);System.out.println(4:

12、+rs.getString(4);catch(NamingException e)/TODO Auto-generated catch blocke.printStackTrace();catch(SQLException e)/TODO Auto-generated catch blocke.printStackTrace();(4)、详情参考jndisql。Java 文件,以及index.jsp。注意:该测试不能在main 方法中测试;可以写一个jsp 在 tomcat 环境中测试。因为:java 单元的环境是jdk;而 jsp 的环境却是tomcat;数据连接池是在tomcat 中配置的

13、,所以能正常运行的,但java测试的环境只有jdk,所以在引用数据连接池时就时出现找不到环境的错误。使用环境:当使用weblogic或者 websphere 等高级的web 服务器的时候,可以考虑使用这种方式提高性能。3、使用 C3p0方式C3P0是开源的数据库连接组件,支持创建数据库连接池,管理connection等功能。使用该种方式做数据库连接时候,需要导入c3p0-0.9.1.2.jar。同时,关于数据库连接的具体参数,例如:url,username,password,最小连接数,最大连接数。等信息既可以在xml 配置文件中配置,也可以通过程序编码方式创建。Spring支持 c3p0 的

14、数据库连接池方式,因此在 spring 环境中使用时,支持在 applicationcontext.xml文件中配置。另外,由于数据库连接池在整个project 中针对某个数据库而言是单例的,所以,即使通过编码的方式创建,那么要保证其单实例特性。如果存在多个,那么必然会导致性能低下。下面,列出通过程序编码方式使用c3p0 数据库连接池的方式。ComboPooledDataSource ds=new ComboPooledDataSource();try ds.setDriverClass(com.mysql.jdbc.Driver);ds.setJdbcUrl(jdbc:mysql:/loca

15、lhost:3306/editortest);ds.setUser(root);ds.setPassword(123456);ds.setMaxPoolSize(20);ds.setInitialPoolSize(10);ds.setMaxIdleTime(2000);Connection cn=ds.getConnection();Statement st=cn.createStatement();String sql=select*from artical where id=1;ResultSet rs=st.executeQuery(sql);while(rs.next()System.

16、out.println(1:+rs.getString(1);System.out.println(2:+rs.getString(2);System.out.println(3:+rs.getString(3);System.out.println(4:+rs.getString(4);catch(PropertyVetoException e)/TODO Auto-generated catch blocke.printStackTrace();catch(SQLException e)/TODO Auto-generated catch blocke.printStackTrace();

17、备注:通常使用方式,都是通过配置文件配置,几乎不会用到这种硬编码方式。在此,只是简单介绍C3P0 的使用方式。详情,可以参考c3p0test.java。4、使用 dbcp 方式DBCP方式,是apache 提供的数据源连接池方式,支持数据库连接池创建,管理connection等功能。使用环境,需要导入commons-dbcp.jar 和 commons-pool.jar 两个 jar包。上面提到的JNDI 方式,其实质实用的就是dbcp 数据源;只是他是通过在web 服务器上做配置,由web 服务器负责创建该数据源。同样的,dbcp 数据源也支持xml 配置文件和硬编码两种方式。通常使用方式,

18、都是通过配置文件配置,几乎不会使用硬编码方式。下面简单介绍dbcp 方式的编码:BasicDataSource ds=new BasicDataSource();ds.setDriverClassName(com.mysql.jdbc.Driver);ds.setUrl(jdbc:mysql:/localhost:3306/editortest);ds.setUsername(root);ds.setPassword(123456);ds.setMaxIdle(20);ds.setInitialSize(10);ds.setMaxActive(2000);try Connection cn=d

19、s.getConnection();Statement st=cn.createStatement();String sql=select*from artical where id=1;ResultSet rs=st.executeQuery(sql);while(rs.next()System.out.println(1:+rs.getString(1);System.out.println(2:+rs.getString(2);System.out.println(3:+rs.getString(3);System.out.println(4:+rs.getString(4);catch

20、(SQLException e)/TODO Auto-generated catch blocke.printStackTrace();5、使用 BoneCP方式。BoneCP是快速高效的数据库连接池组件,据说性能上目前是最好得,比C3P0 和 DBCP快 25 倍。使用该组件,需要导入bonecp-0.6.5.jar,google-collections-1.0.jar,slf4j-api-1.5.11.jar,slf4j-log4j12-1.5.11.jar,log4j-1.2.15.jar。下面,简单列出编码方式的使用,做简单的了解。BoneCPDataSource ds=new Bon

21、eCPDataSource();ds.setDriverClass(com.mysql.jdbc.Driver);ds.setJdbcUrl(jdbc:mysql:/localhost:3306/editortest);ds.setUsername(root);ds.setPassword(123456);try Connection cn=ds.getConnection();Statement st=cn.createStatement();String sql=select*from artical where id=1;ResultSet rs=st.executeQuery(sql)

22、;while(rs.next()System.out.println(1:+rs.getString(1);System.out.println(2:+rs.getString(2);System.out.println(3:+rs.getString(3);System.out.println(4:+rs.getString(4);catch(SQLException e)/TODO Auto-generated catch blocke.printStackTrace();总结:以上,介绍了几种常用的数据源连接池;这几种连接池在使用过程,即支持硬编码的方式,也支持配置文件的配置方式;在正式

23、实用的时候,应该尽量使用配置的方式,便于维护和管理。硬编码的方式,可以做为测试使用。同时,spring框架,通过他自己的方式集成上述几种数据源,理论上来说,都支持。各个数据源连接池都有一些公有的属性,因为他们都是从javax.sql.datasource继承而来,而且都有最大连接数,初始化连接数等概念。同时,他们又分别有各自不同的属性,做了扩展。这里只是简单的介绍,在实际使用中,想要实现高性能的数据库连接池管理,还需要深入研究每种方式的连接属性配置;例如:根据实际需要,设置合适的最小连接数和最大连接数,等待时间等。五、Java(x).sql直接操作数据库与各个开源数据源(datasource)

24、关系当使用JDK 提供的java(x).sql包中的类访问数据库时候,基本上用到的就是drivermanager,connection,statement,resultset。其中 drivermanger是类,他调用相应的驱动(即各个数据库厂商提供的驱动)中的方法生成connection对象。Connection是接口,在 各 个 数 据 库 厂 商 提 供 的 数 据 库 驱 动 中,都 实 现 了 该 接 口。例 如:当 使 用com.mysql.jdbc.driver时候,生成的connection即为com.mysql.jdbc.Connection对象。Javax.sql包中定义了

25、接口datasource,统一规定了作为数据源连接池必须提供的方法和属性等。各个数据源组件中提供的datasource都实现了该接口。当通过数据源连接池的方式 获 取connnection的 时 候,同 样 的,各 个 数 据 源 组 件 也 都 提 供(实 现 了java.sql.connection)接口的类。更为具体的细节,可以参考jdk文档中关于java(x).sql包中相关类和接口的描述;参考开源数据源连接池组件的相关源码(例如C3P0);参考相关的数据库驱动。六、附录:Java 开源的数据库连接池在 Java 中开源的数据库连接池有以下几种:1,C3P0 C3P0 是一个开放源代码

26、的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3 和 jdbc2 扩展规范说明的Connection 和 Statement 池的 DataSources 对象。2,Proxool 这是一个Java SQL Driver驱动程序,提供了对你选择的其它类型的驱动程序的连接池封装。可以非常简单的移植到现存的代码中。完全可配置。快速,成熟,健壮。可以透明地为你现存的JDBC驱动程序增加连接池功能。3,Jakarta DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序用使用。4,DDConnec

27、tionBroker DDConnectionBroker是一个简单,轻量级的数据库连接池。5,DBPool DBPool 是一个高效的易配置的数据库连接池。它除了支持连接池应有的功能之外,还包括了一个对象池使你能够开发一个满足自已需求的数据库连接池。6,XAPool XAPool 是一个 XA数据库连接池。它实现了javax.sql.XADataSource并提供了连接池工具。7,Primrose Primrose是一个Java开发的数据库连接池。当前支持的容器包括Tomcat4&5,Resin3与 JBoss3.它同样也有一个独立的版本可以在应用程序中使用而不必运行在容器中。Primros

28、e通过一个web 接口来控制SQL处理的追踪,配置,动态池管理。在重负荷的情况下可进行连接请求队列处理。8,SmartPool SmartPool是一个连接池组件,它模仿应用服务器对象池的特性。SmartPool能够解决一些临界问题如连接泄漏(connection leaks),连接阻塞,打开的JDBC对象如 Statements,PreparedStatements等.SmartPool 的特性包括支持多个pools,自动关闭相关联的JDBC 对象,在所设定 time-outs之后察觉连接泄漏,追踪连接使用情况,强制启用最近最少用到的连接,把 SmartPool 包装 成现存的一个pool 等。9,MiniConnectionPoolManager MiniConnectionPoolManager是一个轻量级JDBC数据库连接池。它只需要Java1.5(或更高)并且没有依赖第三方包。10,BoneCP BoneCP 是一个快速,开源的数据库连接池。帮你管理数据连接让你的应用程序能更快速地访问数据库。比C3P0/DBCP 连接池快25 倍。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 实施方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com