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() 內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: