jdbc java數據庫連接 3)Statement接口之執行DDL和DML語句的簡化


上一章的代碼中,可以發現,jdbc執行DDL和DML有幾個步驟都是一樣的:

 

   1)執行語句開始時,創建驅動注冊對象、獲取連接的數據庫對象、創建Statement對象

1             // 創建驅動注冊對象
2             Class.forName("com.mysql.jdbc.Driver");
3 
4             // 獲取連接的數據庫對象
5              Connection conn = DriverManager.getConnection(url, user,
6                     password);
7 
8             // 創建Statement對象
9              Statement stsm = conn.createStatement();

  

    2)所有操作執行完后,關閉連接(后來的先關)

 1             if (stsm != null) {
 2                 try {
 3                     stsm.close();
 4                 } catch (SQLException e) {
 5                     // TODO Auto-generated catch block
 6                     e.printStackTrace();
 7                     throw new RuntimeException(e);
 8                 }
 9             }
10             if (conn != null) {
11                 try {
12                     conn.close();
13                 } catch (SQLException e) {
14                     // TODO Auto-generated catch block
15                     e.printStackTrace();
16                     throw new RuntimeException(e);
17                 }

 

所以,我們可以把這三大部分湊起來,建立一個jdbc的工具類:

  jdbcutil

    

 1 /**
 2  * 這是jdbc執行DDL和DML的工具類
 3  * 
 4  * @author LZl
 5  * 
 6  */
 7 public class Jdbcutil {
 8 
 9     // 創建數據庫的基本信息
10     // 創建url
11     private static String url = "jdbc:mysql://localhost:3306/day1029?useUnicode=true&characterEncoding = GB2312 ";
12     // 數據庫的用戶名和密碼
13     private static String user = "root";
14     private static String password = "root";
15     public static Connection conn = null;
16     static Statement stsm = null;
17 
18     /**
19      * 一:注冊的驅動程序 獲取連接對象的方法 靜態代碼塊(好處是只需要加載一次,且隨着類的加載而加載)
20      */
21 
22     static {
23         try {
24             Class.forName("com.mysql.jdbc.Driver");
25         } catch (Exception e) {
26             e.printStackTrace();
27             System.out.println("獲取數據庫連接對象出錯");
28         }
29     }
30 
31     /**
32      * 二:獲取連接對象 該方法返回一個連接 33      */
34 
35     public static Connection getConnection() {
36 
37         // 創建連接對象
38         try {
39             conn = DriverManager.getConnection(url, user, password);
40         } catch (SQLException e) {
41             // TODO Auto-generated catch block
42             e.printStackTrace();
43             throw new RuntimeException(e);
44         }
45         return conn;
46 
47     }
48 
49     /**
50      * 三:釋放資源,斷開連接 參數列表:conn。stsm 51      */
52 
53     public static void close(Connection conn, Statement stsm) {
54 
55         if (stsm != null) {
56             try {
57                 stsm.close();
58             } catch (SQLException e) {
59                 // TODO Auto-generated catch block
60                 e.printStackTrace();
61                 throw new RuntimeException(e);
62             }
63         }
64 
65         if (conn != null) {
66             try {
67                 conn.close();
68             } catch (SQLException e) {
69                 // TODO Auto-generated catch block
70                 e.printStackTrace();
71                 throw new RuntimeException(e);
72             }
73         }
74     }
75   
76 }

 

   工具類再重載一個帶有3個參數的關閉連接的方法:

 1     public static void close(Connection conn,Statement stmt,ResultSet rs){
 2         if(rs!=null) 3 try { 4  rs.close(); 5 } catch (SQLException e1) { 6  e1.printStackTrace(); 7 throw new RuntimeException(e1); 8  } 9 if(stmt!=null){ 10 try { 11  stmt.close(); 12 } catch (SQLException e) { 13  e.printStackTrace(); 14 throw new RuntimeException(e); 15  } 16  } 17 if(conn!=null){ 18 try { 19  conn.close(); 20 } catch (SQLException e) { 21  e.printStackTrace(); 22 throw new RuntimeException(e); 23  } 24  } 25 }

 

然后,1)jdbc使用DDL的方法要這樣

 1 public class UtilTest {
 2 
 3     private static Connection conn = null;
 4     // 創建Statement對象
 5     private static Statement stsm;
 6 
 7     // 執行DDL語句(創建)
 8     private static void DDL() {
 9 
10         try {
11             // 使用jdbc工具類來獲取連接對象
12             conn = Jdbcutil.getConnection();
13 
14             // 准備sql語句
15             String sql = "CREATE TABLE person(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(10),sex VARCHAR(5),age INT,psot VARCHAR(10),email VARCHAR(20),phone INT)";
16 
17             stsm = conn.createStatement();
18 
19             // 發送sql語句
20             int result = stsm.executeUpdate(sql);
21         } catch (Exception e) {
22             e.printStackTrace();
23             throw new RuntimeException(e);
24         } finally {
25             // 調用工具類的方法,關閉連接
26             Jdbcutil.close(conn, stsm);
27         }
28     }
29     public static void main(String[] args) {
30         DDL();
31     }
32 }

 

 

 

 

   

  2)執行DML語句:

 1     //創建驅動注冊對象
 2     private static Connection conn = null;
 3     // 創建Statement對象
 4     private static Statement stsm = null;
 5 
 6 // 執行DML語句(插入)
 7     private static void DML() {
 8 
 9         try {
10             // 使用工具類獲取連接對象
11             conn = Jdbcutil.getConnection();
12 
13             // 准備sql語句
14             String sql = "INSERT INTO person (NAME,sex,age) VALUES ('張三','男',20);";
15 
16             // 創建statement對象
17             stsm = conn.createStatement();
18 
19             // 執行sql語句
20             int result = stsm.executeUpdate(sql);
21             System.out.println("影響了" + result + "行");
22 
23         } catch (Exception e) {
24             e.printStackTrace();
25             throw new RuntimeException(e);
26         } finally {
27             // 調用工具類關閉連接
28             Jdbcutil.close(conn, stsm);
29         }
30     }

 

  3)執行DQL語句:

 1     // 創建驅動注冊對象
 2     private static Connection conn = null;
 3     // 創建Statement對象
 4     private static Statement stsm = null;
 5 
 6         // 執行DQL語句
 7     private static void DQL() {
 8 
 9         try {
10 
11             // 調用工具類連接對象
12             conn = Jdbcutil.getConnection();
13 
14             // 創建statement對象
15             stsm = conn.createStatement();
16 
17             // 准備sql語句
18             String sql = "SELECT * FROM person;";
19 
20             // 執行sql語句,返回的是RrsultSet對象
21             ResultSet rs = stsm.executeQuery(sql);
22 
23             // 查看第二行數據
24 
25             // 移動光標
26             rs.next();
27             rs.next();
28             // 使用列名來查看
29             int id = rs.getInt("id");
30             String name = rs.getString("name");
31             String sex = rs.getString("sex");
32             System.out.println(id + "," + name + "," + sex);
33 
34         } catch (Exception e) {
35             e.printStackTrace();
36             throw new RuntimeException(e);
37         } finally {
38             // 調用工具類關閉連接,這里要多關閉一個連接:ResultSet,工具類的關閉方法要添加它
39             Jdbcutil.close(conn, stsm,rs);
40         }
41 
42     }

 

  

 


免責聲明!

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



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