当前位置:Gxlcms > 数据库问题 > Java——JDBC小结(3)

Java——JDBC小结(3)

时间:2021-07-01 10:21:17 帮助过:2人阅读

=jdbc:oracle:thin:localhost:orcl jdbc.user=system jdbc.password=123 #dbcp param dbcp.maxActive=1 dbcp.initSize=1

可以看到就是在之前的文件之中加入了两句话,设置连接的初始和最大连接数,这里数量不要设置过大,否则会造成数据库瘫痪。

整体代码如下:

 1 package jbbc_day01;
 2 
 3 import java.io.IOException;
 4 import java.sql.Connection;
 5 import java.sql.SQLException;
 6 import java.util.Properties;
 7 
 8 import org.apache.commons.dbcp.BasicDataSource;
 9 
10 /**
11  * 用来管理连接
12  * 数据库连接信息,保存在属性文件中
13  * @author jiawenzhe
14  *
15  */
16 public class DBUtil3 {
17     private static BasicDataSource ds;
18     //1、加载驱动
19     static{        
20         try {
21             //加载属性文件数据
22             Properties prop = new Properties();
23             prop.load
24             (DBUtil3.class.getClassLoader().
25             getResourceAsStream
26             ("db.properties"));
27             String driverclass = prop.getProperty("jdbc.driverclass");
28             String url = prop.getProperty("jdbc.url");
29             String user = prop.getProperty("jdbc.user");
30             String password = prop.getProperty("jdbc.password");
31             String strMaxActive
32             = prop.getProperty("dbcp.maxActive");
33             String strInitSize
34             = prop.getProperty("dbcp.initSize");
35             //实例化,并初始化连接池
36             ds = new BasicDataSource();
37             ds.setDriverClassName(driverclass);
38             ds.setUrl(url);
39             ds.setUsername(user);
40             ds.setPassword(password);            
41             ds.setMaxActive
42             (Integer.parseInt(strMaxActive));            
43             ds.setInitialSize
44             (Integer.parseInt(strInitSize));
45             
46         }  catch (IOException e) {
47             e.printStackTrace();
48             throw new RuntimeException
49             ("读取属性文件错误",e);
50         }
51     }
52     //2、创建连接
53     public static  Connection getConnection() throws SQLException{
54         return ds.getConnection() ;
55     }
56     
57     //3、关闭连接
58      public static void close(Connection conn){
59          if(conn!=null){
60              try {
61                 conn.close();
62             } catch (SQLException e) {
63                 e.printStackTrace();
64                 throw new RuntimeException("关闭连接错误",e);
65             }
66          }
67      }
68 }

这里面同样是调用了close()方法,但是我们不能像之前那样理解为关闭连接,而我们应该认为他是归还给连接池,用Properties类读取出来的初始化和最大连接数量是字符串类型,而需要将字符串类型转换为Integer类型。

这里需要在介绍一个新类:BasicDataSource();

在我看来这个类再一次的优化了连接的封装

在实例化这个类之后,他有一系列的set属性方法,就是将Properties类get得到的值放入其中去统一初始化连接的准备工作,而不用想工具类2中那样放入到对应的方法中,而且这个类实现的对象直接就可以调用getConnection对象返回一个连接。

这样最终版本的JDBC工具类就写好了,我们再进行JDBC操作的时候可以直接拿来使用这个工具类,而之前所述的那两个工具类,都是为了最终引出这个工具类而做的前提铺垫

所以只需要记住这个工具类即可!

未完待续!

 

Java——JDBC小结(3)

标签:

人气教程排行