自行封裝JDBC工具類

將JDBC冗餘的代碼進行封裝,此處的冗餘特指每次操做數據庫必然創建鏈接和關閉流操做!代碼註釋很詳細,此處不過多解釋,直接進入代碼部分:java

 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:mysql

 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 = 

 

封裝好了以後咱們寫個測試類:sql

 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 }

測試結果截圖:數據庫

數據庫相應信息截圖:oracle

爲了方便你們共同窗習,源碼已打包上傳至個人網盤:http://pan.baidu.com/s/1eS8LhAE 密碼:z60x學習

相關文章
相關標籤/搜索