1. 程式人生 > >JDBC的工作原理和見解

JDBC的工作原理和見解

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關鍵字時翻閱了一些解析好文,在這裡一併貼出,以供參考