自行封裝JDBC工具類


將JDBC冗余的代碼進行封裝,此處的冗余特指每次操作數據庫必然建立連接和關閉流操作!代碼注釋很詳細,此處不過多解釋,直接進入代碼部分:

 1 package edu.aeon.jdbc;
 2 import java.io.IOException;
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.PreparedStatement;
 6 import java.sql.SQLException;
 7 import java.util.Properties;
 8 /**
 9  * 類作用:該類用於封裝jdbc對數據庫(打開、關流)操作!
10  * @author lzj
11  * @create 2017年11月15日 下午5:53:43
12  */
13 public class JdbcUtil {
14     static Properties prs=null;
15     //加載資源文件處理類、只加載一次、且最先要加載到內存堆中
16     /*
17      * static{}(靜態代碼塊)與{}(非靜態代碼塊)的異同點
18         相同點:都是在JVM加載類時且在構造方法執行之前執行,在類中都可以定義多個,
19                  一般在代碼塊中對一些static變量進行賦值。
20         不同點:靜態代碼塊在非靜態代碼塊之前執行(靜態代碼塊—>非靜態代碼塊—>構造方法)。
21                      靜態代碼塊只在第一次new執行一次,之后不再執行,而非靜態代碼塊在每new
22                  一次就執行一次。非靜態代碼塊可在普通方法中定義(不過作用不大);而靜態代碼塊不行。*/
23     static {
24         prs=new Properties();
25         try {
26             //加載數據庫配置文件,如果加載xml,可用loadXML()
27             prs.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("database.properties"));
28         } catch (IOException e) {
29             e.printStackTrace();
30         }
31     }
32     /**
33      * @describe 用於建立與mysql數據庫之間的連接
34      * @create at 2017年11月15日 下午6:51:35 by lzj
35      * @Parameters1 無
36      * @Returns Connection 數據庫連接對象
37      */
38     public static Connection getMysqlConnection(){
39         try {
40             //注冊mysql驅動類
41             Class.forName(prs.getProperty("mysql.driver"));
42             //將根據所傳入url,用戶名,密碼所建立的mysql數據庫連接對象返回
43             return DriverManager.getConnection(
44                     prs.getProperty("mysql.url"),
45                     prs.getProperty("mysql.username"),
46                     prs.getProperty("mysql.password"));
47         } catch (ClassNotFoundException e) {
48             e.printStackTrace();
49             System.out.println("加載mysql驅動類時出錯!");
50             return null;
51         } catch (SQLException e) {
52             e.printStackTrace();
53             System.out.println("建立數據庫連接時出錯!");
54             return null;
55         }
56     }
57     /**
58      * @descibe 該靜態方法用於關閉對數據庫的流操作!(可重載)
59      * 此處為了簡單演示只寫了一個關閉類,實際開發中該類重載很多次!
60      * @create at 2017年11月15日 下午6:54:45 by lzj
61      * @Parameters1 ps 數據庫操作對象 、預編譯
62      * @Parameters2 conn 數據庫連接對象
63      * @Returns void
64      */
65     public static void closeResource(PreparedStatement ps,Connection conn){
66         try {
67             if(ps!=null) {
68                 ps.close();
69             }
70         } catch (Exception e) {
71             e.printStackTrace();
72             System.out.println("ps流關閉異常!");
73         }
74         try {
75             if(conn!=null) {
76                 conn.close();
77             }
78         } catch (Exception e) {
79             e.printStackTrace();
80             System.out.println("conn流關閉異常!");
81         }
82     }
83 }

配置文件database.properties:

 1 ####################[mysql]####################
 2 mysql.driver = com.mysql.jdbc.Driver
 3 mysql.url = jdbc:mysql://localhost:3306/student
 4 mysql.username = root
 5 mysql.password = lzj_aeon+
 6 ####################[oracle]####################
 7 oracle.driver = 
 8 oracle.url = 
 9 oracle.username = 
10 oracle.userpw = 

 

封裝好了之后我們寫個測試類:

 1 package edu.aeon.jdbc;
 2 
 3 import java.sql.Connection;
 4 import java.sql.PreparedStatement;
 5 import java.sql.SQLException;
 6 
 7 /**
 8  * @author lzj
 9  * @create 2017年11月15日 下午6:40:39
10  * @describe
11  */
12 public class Test {
13 
14     /**
15      * at 2017年11月15日 下午6:40:39 by lzj
16      * @Parameters1 String[] args
17      * @Returns void
18      */
19     public static void main(String[] args) throws SQLException {
20         Connection conn = JdbcUtil.getMysqlConnection();
21         PreparedStatement ps=null;
22         String sql="insert into student (id,name) values (?,?)";
23         try {
24             ps = conn.prepareStatement(sql);
25             ps.setInt(1, 666);
26             ps.setString(2, "lzj");
27             ps.execute();
28             System.out.println("數據插入成功!");
29         } catch (SQLException e) {
30             e.printStackTrace();
31             conn.rollback();
32             System.out.println("數據插入失敗!");
33         }finally {
34             JdbcUtil.closeResource(ps, conn);
35         }
36     }
37 }

測試結果截圖:

數據庫相應信息截圖:

為了方便大家共同學習,源碼已打包上傳至我的網盤:http://pan.baidu.com/s/1eS8LhAE 密碼:z60x

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM