博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
连接池的使用(一)
阅读量:4674 次
发布时间:2019-06-09

本文共 4326 字,大约阅读时间需要 14 分钟。

数据库操作中,和数据库建立连接是最为耗时的操作之一,而且数据库都有最大连接数目的限制

,如果很多用户访问的是同一数据库,所进行的都是同样的操作,那么为每个用户都建立一个连

接是不合理的; 连接池的思想是:Tomcat服务器可以预备好若干个连接对象,将这些对象存放在一个称为连接池

的容器中(通常由链表来担任这一角色),当某用户需要操作数据库时,只要从连接池中取出一

个连接对象,当用户使用完该连接对象后,将该连接对象放回到连接池中。如果连接池中没有连

接对象可以用,那么该用户就必须等待。 如下例子是使用scope=application的bean(由ApplicationCon类负责创建)。该bean创建时就

建立若干连接对象,并将它们存放在一个LinkedList对象(连接池)中。因此,所有用户将共享

LinkedList对象中的连接对象。

一、ApplicationCon

1 package database.operation; 2 import java.sql.*; 3 import java.util.LinkedList;  4 public class ApplicationCon { 5      6     LinkedList
list;//存放Connection对象的链表 7 public ApplicationCon() 8 { 9 try10 {11 Class.forName("com.mysql.dbc.Driver");12 }catch(Exception e)13 {14 15 }16 list=new LinkedList
();17 //创建十个连接18 for(int k=1;k<=10;k++)19 {20 try{21 String uri="jdbc:mysql://localhost/factory";22 Connection conn=DriverManager.getConnection(uri,"root","003222");23 list.add(conn);24 }25 catch(SQLException e)26 {}27 }28 }29 public synchronized Connection getOneConnection()30 {31 if(list.size()>0)32 {33 return list.removeFirst();//链表删除第一个结点,并返回该结点的连接对象34 35 }36 else37 return null;38 }39 public synchronized void putBackOneConnection(Connection conn)40 {41 list.addFirst(conn);42 }43 }

二、UseConnBean

1 package database.operation; 2 import java.sql.*; 3  4  5 public class UseConnBean { 6     String tableName=""; 7     StringBuffer queryResult;//查询结果 8     Connection conn; 9     public UseConnBean()10     {11         queryResult=new StringBuffer();12     }13     public void setTableName(String s)14     {15         tableName=s.trim();16         queryResult=new StringBuffer();17     }18     public String getTableName()19     {20         return tableName;21     }22     public void setConnection(Connection con)23     {24         this.conn=con;25     }26     public StringBuffer getQueryResult()27     {28         Statement sql;29         ResultSet rs;30         try{31             queryResult.append("
");32 DatabaseMetaData metadata=conn.getMetaData();33 ResultSet rs1=metadata.getColumns(null, null, tableName, null);34 int filedCount=0;35 queryResult.append("
");36 while(rs1.next())37 {38 filedCount++;39 String clumnName=rs1.getString(4);40 queryResult.append("
");41 }42 queryResult.append("
");43 sql=conn.createStatement();44 rs=sql.executeQuery("select * from "+tableName);45 while(rs.next())46 {47 queryResult.append("
");48 for(int k=1;k<=filedCount;k++)49 {50 queryResult.append("
");51 }52 queryResult.append("
");53 }54 queryResult.append("
"+clumnName+"
"+rs.getString(k)+"
"); 55 }56 catch(SQLException e)57 {58 queryResult.append("请输入正确的表名"+e);59 }60 return queryResult;61 }62 }

三、JSP页面代码

1 <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6 <%@ page contentType="text/html; charset=GBK" %> 7 <%@ page import="database.operation.*" %> 8 <%@ page import="java.sql.*" %> 9 
10
11 <% Connection connection=connSet.getOneConnection();12 inquire.setConnection(connection);13 %>14
15 16 17 18 19 20 My JSP 'lianjiechi.jsp' starting page21 22
23
24
25
26
27
30 31 32 33 34 你连接的数据库是factory35
36 输入表的名字:
37
38 39
40 在
表查询到的记录;41
42 <% 43 connSet.putBackOneConnection(connection);44 %>45 46 47

 

转载于:https://www.cnblogs.com/ylgl/p/3815065.html

你可能感兴趣的文章