JDBC的工作原理和見解
阿新 • • 發佈:2019-02-10
JDBC工作整體流程
1.載入驅動
2.建立連線
3.建立語句物件
4.建立SQL語句
5.執行SQL語句
6.處理結果集(只有查詢才牽涉到對結果集的處理)
7.關閉連線
JDBC的建立有一些共同特徵,為了方便管理.可以把1.載入驅動 2.建立連線 3.關閉連線(因為查詢需要用到ResultSet物件而增刪改不用,所以這裡需要定義兩個關閉方法,用到了方法的過載機制)放在一個自己定義的類裡,以便需要時呼叫.程式碼如下,各個語句需要丟擲的異常已經在備註上說明
package csdn.driver; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Driver { private static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; private static String url = "jdbc:sqlserver://localhost:1433;DatabaseName=stuDB"; private static String user = "sa"; private static String password = "a123456"; public static Connection getCon() throws ClassNotFoundException, SQLException{ Class.forName(driver);// ClassNotFoundException return DriverManager.getConnection(url,user,password);//SQLException } public static void closeDB(Statement sta,Connection con) throws SQLException{ if(sta!=null){ sta.close();//SQLException } if(con!=null){ con.close();//SQLException } } public static void closeDB(Statement sta,Connection con,ResultSet res) throws SQLException{ if(sta!=null){ sta.close();//SQLException } if(con!=null){ con.close();//SQLException } if(res!=null){ res.close();//SQLException } } }
再建立一個類,來實現連線資料庫的方法,並且編輯sql語句然後執行,實現類與資料庫的互動
package csdn.driver; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class SqlCon { Connection con =null; Statement sta = null; ResultSet res = null; public void queryDemo(){ try { con = Driver.getCon(); sta = con.createStatement(); String Sql = "SELECT [account_id]" +",[account_no]" +",[account_amout]" +"FROM [stuDB].[dbo].[account]" +"WHERE [account_id]=1 "; res = sta.executeQuery(Sql); while(res.next()){ System.out.println("id"+" "+"賬戶"+" "+"餘額"); System.out.print(res.getInt("account_id")+" "); System.out.println(res.getDouble("account_amout")); } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { Driver.closeDB(sta, con, res); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
執行結果如下
一些疑問
在Driver類裡宣告的變數和方法為什麼要用static修飾?
因為Driver類裡聲明瞭3個靜態方法,靜態方法是不能呼叫非靜態類變數,static物件和static方法都屬於類的成員,他們不屬於類的任何例項,被所有例項共享。static語句塊又叫“靜態程式碼塊”,當JVM載入類時會自動執行static語句中的程式碼.
我在理解java static關鍵字時翻閱了一些解析好文,在這裡一併貼出,以供參考