java数据源,数据库连接池,javaweb数据库连接池

  java数据源,数据库连接池,javaweb数据库连接池

  

  传统方式和连接池方式

  以传统方式进行

  在Java中使用JDBC以传统方式连接数据库,要一次完成对数据库的操作,一般有以下步骤:

  1.加载驱动程序。

  2.建立联系。

  3.执行SQL语句。

  4.释放连接。

  5.传统方法的缺点。

  对数据库的每一个操作都需要建立一个连接,连接对象会被加载到内存中,会消耗大量的内存和时间。如果有很多操作需要在短时间内建立连接,会占用大量系统资源,甚至导致服务器崩溃。

  与连接建立相对应的是,每次使用时都需要手动释放连接。如果你忘记释放连接或者程序由于异常而无法成功释放连接,就会导致内存泄漏。

  另外,传统方式无法控制连接数。如果连接太多,会导致无限创建连接对象,造成内存开销过大,服务器崩溃。

  (推荐视频:java视频教程)

  连接池的步骤

  1.创建连接池并配置连接属性。

  2.使用连接池获取连接。

  连接池的优势

  每次需要连接数据库时,不需要建立连接,而是通过提供连接的连接池来获取。

  使用连接后,不需要手动释放连接,而是让连接池释放连接。

  可以通过连接池控制连接数,连接池中的连接可以多次重用,从而避免了无限制创建连接的问题。

  使用连接池

  使用C3P0数据库连接池

  导入jar包:

  C3p0-0.9.5.2.jar在当前项目的代码根src下创建一个名为c3p0-config.xml的新配置文件。注意文件名不能更改,内容如下:

  C3 P0-配置

  !-连接名称-

  named-config name=mysql

  !-连接数据库的驱动程序类名-

  property name= driver class com . MySQL . JDBC . driver/property

  !-连接属性-

  属性名= JDBC URL JDBC:MySQL://192 . 168 . 35 . 128:3306/demo/property

  属性名=“用户”根/属性

  属性名=密码 123456/属性

  !-连接池用完时等待新连接的时间。超时后,SQLException将在毫秒内抛出。如果设置为0,它将无限期等待。默认值为0。-

  属性名称= check out time out 5000/属性

  !-当连接用尽时,一次获得的连接数量-

  属性名=acquireIncrement2/property

  !-初始连接数-

  属性名=initialPoolSize1/property

  !-最小连接数-

  属性名=minPoolSize3/property

  !-最大连接数-

  属性名=maxPoolSize5/property

  /name-config

  /c3p0-config程序代码:

  公共类TestDataPool {

  //根据配置文件中的名称创建一个连接池

  public static combobooleddatasource CPDs=new combobooleddatasource( MySQL );

  /**

  *主程序

  */

  公共静态void main(String[] args) {

  //模拟对数据库的多次查询。

  for(int I=0;i6;i ) {

  新线程(新Runnable() {

  @覆盖

  公共无效运行(){

  select();

  }

  },‘线程’I)。start();

  }

  }

  /**

  *查询程序

  */

  公共静态void select() {

  连接连接=空;

  PreparedStatement pstmt=null

  结果集rs=null

  //获取连接并执行SQL

  尝试{

  conn=CPDs . getconnection();

  pstmt=conn . prepare statement( select * from student where id=906 );

  RS=PS TMT . execute query();

  while (rs.next()) {

  system . out . println(thread . current thread()。getName() \ t RS . getstring(1) \ t RS . getstring(2) \ t RS . getstring( address );

  }

  } catch(异常e) {

  e . printstacktrace();

  }最后{

  //释放资源

  尝试{

  RS . close();

  } catch (SQLException e) {

  e。printstacktrace();

  }

  尝试{

  pstmt。close();

  } catch (SQLException e) {

  e。printstacktrace();

  }

  尝试{

  conn . close();

  } catch (SQLException e) {

  e。printstacktrace();

  }

  }

  }

  }使用二溴氯丙烷(二溴氯丙烷)数据库连接池

  导入冲突包:

  公共区dbcp-1.4.jar2公共区-池-1.5.5 .罐子在当前项目的代码根目录科学研究委员会下新建名为dbcp.properties的配置文件,文件名需要同代码中引用的文件名一致,内容如下:

  # 接数据库的驱动类名

  驱动程序类名=com。MySQL。JDBC。驾驶员

  # 连接属性

  URL=JDBC:MySQL://192。168 .35 .128:3306/演示

  用户名=根

  密码=123456

  # 初始化连接数

  initialSize=10

  # 最大连接数

  maxActive=15程序代码:

  公共类TestDBCP {

  //根据配置文件里的名称创建连接池

  私有静态数据源源=空

  静态{

  Properties pros=new Properties();

  InputStream is=测试dbcp。班级。获取类加载器().getResourceAsStream( dbcp。属性’);

  尝试{

  赞成。负载(是);

  source=basicdatasourcefactory。创建数据源(pros);

  } catch(异常e) {

  e。printstacktrace();

  }

  }

  /**

  * 主程序

  */

  公共静态void main(String[] args) {

  //模拟多次对数据库的查询操作

  for(int I=0;i6;i ) {

  新线程(新Runnable() {

  @覆盖

  公共无效运行(){

  select();

  }

  }, 线程我)。start();

  }

  }

  /**

  * 查询程序

  */

  公共静态void select() {

  连接连接=空;

  PreparedStatement pstmt=null

  结果集rs=空

  //获取连接并执行结构化查询语言

  尝试{

  conn=源。getconnection();

  pstmt=conn . prepare语句( select * from student where id=906 );

  RS=PS TMT。执行查询();

  while (rs.next()) {

  系统。出去。println(线程。当前线程().getName() \ t RS。getstring(1) \ t RS。getstring(2) \ t RS。getstring(“address”);

  }

  } catch(异常e) {

  e。printstacktrace();

  }最后{

  //释放资源

  尝试{

  RS。close();

  } catch (SQLException e) {

  e。printstacktrace();

  }

  尝试{

  pstmt。close();

  } catch (SQLException e) {

  e。printstacktrace();

  }

  尝试{

  conn . close();

  } catch (SQLException e) {

  e。printstacktrace();

  }

  }

  }

  }以上就是爪哇操作数据库——使用连接池连接数据库的详细内容,更多请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些
  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些,关系型数据库与非关系型数据库简介
  • 关于redis数据库入门详细介绍图片,redis数据库的使用,关于Redis数据库入门详细介绍
  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • 什么是分库分表,为什么要进行分库分表-,分库分表的区别,数据库分库分表是什么,什么情况下需要用分库分表
  • vb中adodb连接数据库,
  • treeview控件绑定数据,wpf treeview数据绑定,详解TreeView绑定数据库
  • sql的多表查询,数据库如何实现多表查询
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库,SQLServer2019 数据库的基本使用之图形化界面操作的实现
  • sql数据库定时备份怎么弄,mysql 定期备份
  • sql数据库定时备份怎么弄,mysql 定期备份,MySQL 数据库定时备份的几种方式(全面)
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar,SQL中varchar和nvarchar的基本介绍及其区别
  • 留言与评论(共有 条评论)
       
    验证码: