时间:2021-07-01 10:21:17 帮助过:2人阅读
可以看到就是在之前的文件之中加入了两句话,设置连接的初始和最大连接数,这里数量不要设置过大,否则会造成数据库瘫痪。
整体代码如下:
- <span style="color: #008080;"> 1</span> <span style="color: #0000ff;">package</span><span style="color: #000000;"> jbbc_day01;
- </span><span style="color: #008080;"> 2</span>
- <span style="color: #008080;"> 3</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.IOException;
- </span><span style="color: #008080;"> 4</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.sql.Connection;
- </span><span style="color: #008080;"> 5</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.sql.SQLException;
- </span><span style="color: #008080;"> 6</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.Properties;
- </span><span style="color: #008080;"> 7</span>
- <span style="color: #008080;"> 8</span> <span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.commons.dbcp.BasicDataSource;
- </span><span style="color: #008080;"> 9</span>
- <span style="color: #008080;">10</span> <span style="color: #008000;">/**</span>
- <span style="color: #008080;">11</span> <span style="color: #008000;"> * 用来管理连接
- </span><span style="color: #008080;">12</span> <span style="color: #008000;"> * 数据库连接信息,保存在属性文件中
- </span><span style="color: #008080;">13</span> <span style="color: #008000;"> * </span><span style="color: #808080;">@author</span><span style="color: #008000;"> jiawenzhe
- </span><span style="color: #008080;">14</span> <span style="color: #008000;"> *
- </span><span style="color: #008080;">15</span> <span style="color: #008000;">*/</span>
- <span style="color: #008080;">16</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> DBUtil3 {
- </span><span style="color: #008080;">17</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span><span style="color: #000000;"> BasicDataSource ds;
- </span><span style="color: #008080;">18</span> <span style="color: #008000;">//</span><span style="color: #008000;">1、加载驱动</span>
- <span style="color: #008080;">19</span> <span style="color: #0000ff;">static</span><span style="color: #000000;">{
- </span><span style="color: #008080;">20</span> <span style="color: #0000ff;">try</span><span style="color: #000000;"> {
- </span><span style="color: #008080;">21</span> <span style="color: #008000;">//</span><span style="color: #008000;">加载属性文件数据</span>
- <span style="color: #008080;">22</span> Properties prop = <span style="color: #0000ff;">new</span><span style="color: #000000;"> Properties();
- </span><span style="color: #008080;">23</span> <span style="color: #000000;"> prop.load
- </span><span style="color: #008080;">24</span> (DBUtil3.<span style="color: #0000ff;">class</span><span style="color: #000000;">.getClassLoader().
- </span><span style="color: #008080;">25</span> <span style="color: #000000;"> getResourceAsStream
- </span><span style="color: #008080;">26</span> ("db.properties"<span style="color: #000000;">));
- </span><span style="color: #008080;">27</span> String driverclass = prop.getProperty("jdbc.driverclass"<span style="color: #000000;">);
- </span><span style="color: #008080;">28</span> String url = prop.getProperty("jdbc.url"<span style="color: #000000;">);
- </span><span style="color: #008080;">29</span> String user = prop.getProperty("jdbc.user"<span style="color: #000000;">);
- </span><span style="color: #008080;">30</span> String password = prop.getProperty("jdbc.password"<span style="color: #000000;">);
- </span><span style="color: #008080;">31</span> <span style="color: #000000;"> String strMaxActive
- </span><span style="color: #008080;">32</span> = prop.getProperty("dbcp.maxActive"<span style="color: #000000;">);
- </span><span style="color: #008080;">33</span> <span style="color: #000000;"> String strInitSize
- </span><span style="color: #008080;">34</span> = prop.getProperty("dbcp.initSize"<span style="color: #000000;">);
- </span><span style="color: #008080;">35</span> <span style="color: #008000;">//</span><span style="color: #008000;">实例化,并初始化连接池</span>
- <span style="color: #008080;">36</span> ds = <span style="color: #0000ff;">new</span><span style="color: #000000;"> BasicDataSource();
- </span><span style="color: #008080;">37</span> <span style="color: #000000;"> ds.setDriverClassName(driverclass);
- </span><span style="color: #008080;">38</span> <span style="color: #000000;"> ds.setUrl(url);
- </span><span style="color: #008080;">39</span> <span style="color: #000000;"> ds.setUsername(user);
- </span><span style="color: #008080;">40</span> <span style="color: #000000;"> ds.setPassword(password);
- </span><span style="color: #008080;">41</span> <span style="color: #000000;"> ds.setMaxActive
- </span><span style="color: #008080;">42</span> <span style="color: #000000;"> (Integer.parseInt(strMaxActive));
- </span><span style="color: #008080;">43</span> <span style="color: #000000;"> ds.setInitialSize
- </span><span style="color: #008080;">44</span> <span style="color: #000000;"> (Integer.parseInt(strInitSize));
- </span><span style="color: #008080;">45</span>
- <span style="color: #008080;">46</span> } <span style="color: #0000ff;">catch</span><span style="color: #000000;"> (IOException e) {
- </span><span style="color: #008080;">47</span> <span style="color: #000000;"> e.printStackTrace();
- </span><span style="color: #008080;">48</span> <span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> RuntimeException
- </span><span style="color: #008080;">49</span> ("读取属性文件错误"<span style="color: #000000;">,e);
- </span><span style="color: #008080;">50</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">51</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">52</span> <span style="color: #008000;">//</span><span style="color: #008000;">2、创建连接</span>
- <span style="color: #008080;">53</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> Connection getConnection() <span style="color: #0000ff;">throws</span><span style="color: #000000;"> SQLException{
- </span><span style="color: #008080;">54</span> <span style="color: #0000ff;">return</span><span style="color: #000000;"> ds.getConnection() ;
- </span><span style="color: #008080;">55</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">56</span>
- <span style="color: #008080;">57</span> <span style="color: #008000;">//</span><span style="color: #008000;">3、关闭连接</span>
- <span style="color: #008080;">58</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> close(Connection conn){
- </span><span style="color: #008080;">59</span> <span style="color: #0000ff;">if</span>(conn!=<span style="color: #0000ff;">null</span><span style="color: #000000;">){
- </span><span style="color: #008080;">60</span> <span style="color: #0000ff;">try</span><span style="color: #000000;"> {
- </span><span style="color: #008080;">61</span> <span style="color: #000000;"> conn.close();
- </span><span style="color: #008080;">62</span> } <span style="color: #0000ff;">catch</span><span style="color: #000000;"> (SQLException e) {
- </span><span style="color: #008080;">63</span> <span style="color: #000000;"> e.printStackTrace();
- </span><span style="color: #008080;">64</span> <span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span> RuntimeException("关闭连接错误"<span style="color: #000000;">,e);
- </span><span style="color: #008080;">65</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">66</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">67</span> <span style="color: #000000;"> }
- </span><span style="color: #008080;">68</span> }
这里面同样是调用了close()方法,但是我们不能像之前那样理解为关闭连接,而我们应该认为他是归还给连接池,用Properties类读取出来的初始化和最大连接数量是字符串类型,而需要将字符串类型转换为Integer类型。
这里需要在介绍一个新类:BasicDataSource();
在我看来这个类再一次的优化了连接的封装
在实例化这个类之后,他有一系列的set属性方法,就是将Properties类get得到的值放入其中去统一初始化连接的准备工作,而不用想工具类2中那样放入到对应的方法中,而且这个类实现的对象直接就可以调用getConnection对象返回一个连接。
这样最终版本的JDBC工具类就写好了,我们再进行JDBC操作的时候可以直接拿来使用这个工具类,而之前所述的那两个工具类,都是为了最终引出这个工具类而做的前提铺垫
所以只需要记住这个工具类即可!
未完待续!
Java——JDBC小结(3)
标签: