Java实现数据库连接池的代码.

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 package com.kyo.connection;

2

3 import java.sql.Connection;

4 import java.sql.DatabaseMetaData;

5 import java.sql.Driver;

6 import java.sql.DriverManager;

7 import java.sql.SQLException;

8 import java.sql.Statement;

9 import java.util.Enumeration;

10 import java.util.Vector;

11

12 public class ConnectionPool {

13

14 private ConnectionParam param;

15

16 private String testTable = ""; // 测试连接是否可用的测试表名,默认没

有测试表

17

18 private Vector connections = null; // 存放连接池中数据库连接的向量 , 初始时为

19 // null,它中存放的对象为PooledConnection 型

20

21 public void setParam(ConnectionParam param {

22 this.param = param;

23 }

24

25 public ConnectionParam getParam( {

26 return param;

27 }

28

29 /**

30 * 构造函数

31 *

32 * @param param

33 */

34 public ConnectionPool(ConnectionParam param {

35 this.param = param;

36 }

37

38 /**

39 *

40 * 获取测试数据库表的名字

41 *

42 * @return 测试数据库表的名字

43 */

44

45 public String getTestTable( {

46 return this.testTable;

47 }

48

49 /**

50 *

51 * 设置测试表的名字

52 *

53 * @param testTable

54 * String 测试表的名字

55 */

56

57 public void setTestTable(String testTable {

58 this.testTable = testTable;

59 }

60

61 /**

62 * 创建一个数据库连接池,连接池中的可用连接的数量采用类成员initialConnections 中设置的值

63 */

64

65 public synchronized void createPool( throws Exception {

66

67 // 确保连接池没有创建

68 // 如果连接池己经创建了,保存连接的向量 connections 不会为空

69 if (connections != null {

70 return; // 如果己经创建,则返回

71 }

72

73 // 实例化 JDBC Driver 中指定的驱动类实例

74 Driver driver = (Driver (Class.forName(this.param.getDriver(

75 .newInstance(;

76 DriverManager.registerDriver(driver; // 注册 JDBC 驱动程序

77 // 创建保存连接的向量 , 初始时有 0 个元素

78 connections = new Vector(;

79

80 // 根据 initialConnections 中设置的值,创建连接。

81 createConnections(this.param.getMinConnection(;

82 System.out.println(" 数据库连接池创建成功! ";

83

84 }

85

86 /**

87 *

88 * 创建由 numConnections 指定数目的数据库连接 , 并把这些连接放入connections 向量中

89 *

90 * @param numConnections

91 * 要创建的数据库连接的数目

92 */

93

94 private void createConnections(int numConnections throws SQLException {

95

96 // 循环创建指定数目的数据库连接

97 for (int x = 0; x < numConnections; x++ {

98 // 是否连接池中的数据库连接的数量己经达到最大?最大值由类成员maxConnections,指出,如果 maxConnections

99 // 为 0 或负数,表示连接数量没有限制。

100 // 如果连接数己经达到最大,即退出。

101

102 if (this.param.getMaxConnection( > 0

103 && this.connections.size( >= this.param.getMaxConnection( { 104 break;

相关文档
最新文档