1. 程式人生 > 實用技巧 >JDBC連線資料庫的步驟詳解

JDBC連線資料庫的步驟詳解

 1 package com.tao.jdbc;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.ResultSet;
 6 import java.sql.Statement;
 7 
 8 public class MainTest {
 9 
10     public static void main(String[] args) {
11         Connection conn=null;
12         Statement st=null;
13
ResultSet rs=null; 14 try { 15 //通過介面呼叫函式,使用多型,實質是呼叫匯入的驅動重寫的函式(驅動就是實現了jdbc提供的介面) 16 //這樣來適應連線不同資料庫的底層實現差異 17 18 /*1.註冊驅動*/ 19 //com.mysql.jdbc.Driver實現了java.sql.Driver介面 20 //DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//lib下的mysql驅動要buildpath一下 21 //函式引數是java.sql.Driver引用指向com.mysql.jdbc.Driver物件 22 23 //一般用這句,上面.mysql.jdbc.Driver()在載入類檔案的時候註冊了一遍,相當於註冊了兩遍 24 Class.forName("com.mysql.jdbc.Driver"); 25 26 /*2.建立連線*/ 27 //getConnection()靜態方法返回的是Connection物件例項,由Connection介面型別的引用接收
28 //真正的與資料庫的直接的連線互動在廠商的PgConnection類中完成,該類實際實現了Connection介面 29 conn=DriverManager.getConnection("jdbc:mysql://localhost/stu_page", "root", "taotao"); 30 /*3.建立statement,使用資料庫一定需要這個物件*/ 31 //createStatement()呼叫的應該是mysql重寫的那個,因為它是介面中的抽象函式 32 st=conn.createStatement(); 33 /*4.執行查詢,得到結果集*/ 34 //executeQuery()呼叫的應該是mysql重寫的那個,因為它是介面中的抽象函式 35 String sql="select * from user"; 36 rs=st.executeQuery(sql); 37 /*5.遍歷查詢每條記錄*/ 38 while(rs.next()){ 39 int id=rs.getInt("id"); 40 String name=rs.getString("user"); 41 String pw=rs.getString("pw"); 42 System.out.println("id="+id+"==name="+name+"pwd="+pw); 43 } 44 } catch (Exception e) { 45 e.printStackTrace(); 46 }finally{ 47 JDBCUtil.release(conn, st, rs); 48 } 49 50 } 51 52 }
 1 package com.tao.jdbc;
 2 
 3 import java.sql.Connection;
 4 import java.sql.ResultSet;
 5 import java.sql.SQLException;
 6 import java.sql.Statement;
 7 
 8 
 9 
10 public class JDBCUtil {
11     /**
12      * 釋放資源
13      * @param conn
14      * @param st
15      * @param rs
16      */
17     public static void release(Connection conn,Statement st,ResultSet rs){
18         closeRs(rs);
19         closeSt(st);
20         closeConn(conn);
21     }
22     private static void closeRs(ResultSet rs){
23         try {
24             if(rs!=null)
25                 rs.close();
26         } catch (SQLException e) {
27             e.printStackTrace();
28         }finally{
29             rs=null;
30         }
31     }
32     
33     private static void closeSt(Statement st){
34         try {
35             if(st!=null)
36                 st.close();
37         } catch (SQLException e) {
38             e.printStackTrace();
39         }finally{
40             st=null;
41         }
42     }
43     private static void closeConn(Connection conn){
44         try {
45             if(conn!=null)
46                 conn.close();
47         } catch (SQLException e) {
48             e.printStackTrace();
49         }finally{
50             conn=null;
51         }
52     }
53 
54 }