JDBC連線資料庫的步驟詳解
阿新 • • 發佈:2020-08-13
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; 13ResultSet 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 }