Java DriverManager.getConnection()獲取資料庫連線
DriverManager.getConnection一共有四個過載方法,前三個由public修飾,用來獲取不同型別的引數,這三個getConnection實際相當於一個入口,他們最終都會return第四個私有化的getConnection方法,最終向第四個私有化方法的傳入引數都是url,java.util.Properties,以及Reflection.getCallerClass(),這個方法是native的
其中Reflection.getCallerClass()是反射中的一個方法,這個方法用來返回他的呼叫類,也就說是哪個類呼叫了這個方法,Reflection類位於呼叫棧中的0幀位置,在JDK7以前,該方法可以傳入int n返回呼叫棧中從0幀開始的第n幀中的類,在JDK7中,需要設定java命令列選項Djdk.reflect.allowGetCallerClass來使用該方法,到了JDK8時,再呼叫該方法會導致UnsupportedOperationException異常。
JDK8中getCallerClass使用方法變更為getCallerClass(),Reflection.getCallerClass()方法呼叫所在的方法必須用@CallerSensitive進行註解,通過此方法獲取class時會跳過鏈路上所有的有@CallerSensitive註解的方法的類,直到遇到第一個未使用該註解的類,避免了用Reflection.getCallerClass(int n) 這個過時方法來自己做判斷。
在這裡每個getConnection都是用CallerSensitive修飾的,呼叫getCallerClass應該是獲取外面使用DriverManager.getConnection()的類的名稱,即在class A中呼叫了DriverManager.getConnection(),則返回class A。
Java DriverManager.getConnection() 方法用於獲得試圖建立到指定資料庫 URL 的連線。DriverManager 試圖從已註冊的 JDBC 驅動程式集中選擇一個適當的驅動程式。
語法1
getConnection(String url)
引數說明:
- url:訪問資料庫的 URL 路徑。
示例
下面的程式碼利用 getConnection 方法建立與 MySQL 資料庫的連線,並返回連線物件。
public Connection getConnection(){ Connection con=null; try{ Class.forName("com.mysql.jdbc.Driver"); //註冊資料庫驅動 String url = "jdbc:mysql://localhost:3306/test?user=root&password=root"; //定義連線資料庫的url con = DriverManager.getConnection(url); //獲取資料庫連線 System.out.println("資料庫連線成功!"); }catch(Exception e){ e.printStackTrace(); } return con; //返回一個連線 }
語法2
getConnection(String url,Properties info)
引數說明:
- url:訪問資料庫的 URL 路徑。
- info:是一個持久的屬性集物件,包括 user 和 password 屬性。
示例
下面的程式碼利用 getConnection 方法第一種語法格式,建立與 MySQL 資料庫的連線,並返回連線物件。
public Connection getConnection(){ Connection con = null; //定義資料庫連線物件 Properties info = new Properties(); //定義Properties物件 info.setProperty("user","root"); //設定Properties物件屬性 info.setProperty("password","root"); try{ Class.forName("com.mysql.jdbc.Driver"); //註冊資料庫驅動 String url = "jdbc:mysql://localhost:3306/test"; //test為資料庫名稱 con = DriverManager.getConnection(url,info); //獲取連線資料庫的Connection物件 System.out.println("資料庫連線成功!"); }catch(Exception e){ e.printStackTrace(); } return con;//返回一個連線 }
語法3
Connection(String url,String user,String password)
引數說明:
- url:訪問資料庫的 URL 路徑。
- user:是訪問資料庫的使用者名稱。
- password:連線資料庫的密碼。
典型應用
下面的程式碼利用 getConnection 方法建立與 SQL Server 資料庫的連線,並返回連線物件。與資料庫建立連線成功後的執行結果。程式碼如下:
private Connection con; private String user = "sa"; //定義連線資料庫的使用者名稱 private String password = ""; //定義連線資料庫的密碼 private String className = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; private String url = "jdbc:sqlserver://localhost:1433;DatabaseName=db_database01"; /**建立資料庫連線*/ public Connection getCon(){ try{ Class.forName(className);//載入資料庫驅動 System.out.println("資料庫驅動載入成功!"); con = DriverManager.getConnection(url,user,password); //連線資料庫 System.out.println("成功地獲取資料庫連線!"); }catch(Exception e){ System.out.println("建立資料庫連線失敗!"); con = null; e.printStackTrace(); } return con; }
執行結果如下:
資料庫驅動載入成功!
成功地獲取資料庫連線!
到此這篇關於Java DriverManager.getConnection()獲取資料庫連線的文章就介紹到這了,更多相關Java DriverManager.getConnection() 內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!