JDBC 連接數(shù)據(jù)庫步驟

jdbc 連接數(shù)據(jù)庫步驟

建立一個 jdbc 數(shù)據(jù)庫連接共有四個步驟:

  • 導(dǎo)入 jdbc 包: 添加 import 語句到 java 程序?qū)胨璧念愒?java 代碼中。
  • 注冊 jdbc 驅(qū)動程序:這一步會導(dǎo)致 jvm 加載所需的驅(qū)動程序?qū)崿F(xiàn)到內(nèi)存中,因此它可以實現(xiàn) jdbc 請求。
  • 制定數(shù)據(jù)庫 url:這是創(chuàng)建格式正確的地址指向到要連接的數(shù)據(jù)庫。
  • 創(chuàng)建連接對象:最后,代碼調(diào)用 drivermanager 對象的 getconnection() 方法來建立實際的數(shù)據(jù)庫連接。

 

1. 導(dǎo)入 jdbc 包

import 語句告訴java編譯器在哪里可以找到在代碼中引用,并放置在您的源代碼最開始的類。

使用標準的jdbc包,它允許選擇,插入,更新和sql表中刪除數(shù)據(jù),添加以下進口到您的源代碼:

import java.sql.* ;  // for standard jdbc programs
import java.math.* ; // for bigdecimal and biginteger support

 

2. 注冊 jdbc 驅(qū)動程序

使用 jdbc 創(chuàng)建連接之前,必須在程序中注冊驅(qū)動程序。注冊過程只能一次,可以通過以下兩種方式之一注冊一個驅(qū)動程序。

1)class.forname():

注冊一個驅(qū)動程序中最常用的方法是使用 java 的 class.forname() 方法來動態(tài)加載驅(qū)動程序的類文件到內(nèi)存中,它會自動將其注冊。這種方法是可取的,因為它允許使驅(qū)動注冊配置,便于攜帶。

下面的示例使用 class.forname() 來注冊 oracle 驅(qū)動程序:

try {
   class.forname("oracle.jdbc.driver.oracledriver");
}
catch(classnotfoundexception ex) {
   system.out.println("error: unable to load driver class!");
   system.exit(1);
}

可以使用 getinstance() 方法來解決不兼容的jvm,但要編寫了兩個額外的例外情況如下:

try {
   class.forname("oracle.jdbc.driver.oracledriver").newinstance();
}
catch(classnotfoundexception ex) {
   system.out.println("error: unable to load driver class!");
   system.exit(1);
catch(illegalaccessexception ex) {
   system.out.println("error: access problem while loading!");
   system.exit(2);
catch(instantiationexception ex) {
   system.out.println("error: unable to instantiate driver!");
   system.exit(3);
}

2)drivermanager.registerdriver():

第二種注冊驅(qū)動程序的方法是使用 static drivermanager.registerdriver() 方法。

下面的示例使用 registerdriver() 來注冊oracle驅(qū)動程序:

try {
   driver mydriver = new oracle.jdbc.driver.oracledriver();
   drivermanager.registerdriver( mydriver );
}
catch(classnotfoundexception ex) {
   system.out.println("error: unable to load driver class!");
   system.exit(1);
}

 

3. 制定數(shù)據(jù)庫 url

當加載驅(qū)動程序完成后,可以使用 drivermanager.getconnection() 方法獲得連接。為方便參考,我們列出了三個重載 drivermanager.getconnection() 方法:

  • getconnection(string url)

  • getconnection(string url, properties prop)

  • getconnection(string url, string user, string password)

在這里,每個方法都需要一個數(shù)據(jù)庫 url,它指向數(shù)據(jù)庫地址。

下表列出了常用 jdbc 驅(qū)動程序名和數(shù)據(jù)庫的 url。

rdbms jdbc驅(qū)動程序的名稱 url 格式
mysql com.mysql.jdbc.driver jdbc:mysql://hostname:port/databasename
oracle oracle.jdbc.driver.oracledriver jdbc:oracle:thin:@hostname:port:databasename
db2 com.ibm.db2.jdbc.net.db2driver jdbc:db2:hostname:port/databasename
sybase com.sybase.jdbc.sybdriver jdbc:sybase:tds:hostname:port/databasename

 

3. 創(chuàng)建連接對象

1)使用數(shù)據(jù)庫url的用戶名和密碼:

getconnection() 最常用的形式是 getconnection(string url, string user, string password),要求傳遞數(shù)據(jù)庫 url,用戶名 username和密碼 password。

假設(shè)有一臺主機tcp/ip地址 192.0.0.1 以及主機名和 oracle 監(jiān)聽器被配置為在端口 1521,數(shù)據(jù)庫名稱是 emp,然后完整的數(shù)據(jù)庫 url 是:

jdbc:oracle:thin:@192.0.0.1:1521:emp

通過 url、username 和 password 三個參數(shù)來獲得一個 connection 對象:

string url = "jdbc:oracle:thin:@192.0.0.1:1521:emp";
string user = "username";
string pass = "password"
connection conn = drivermanager.getconnection(url, user, pass);

2)只使用一個數(shù)據(jù)庫 url 的調(diào)用方式

drivermanager.getconnection(string url);

通過一個參數(shù)來獲得一個 connection 對象,在這種情況下,數(shù)據(jù)庫的 url 中包含用戶名和密碼:

jdbc:oracle:driver:username/password@database

所以上面的連接可以創(chuàng)建如下:

string url = "jdbc:oracle:thin:username/password@192.0.0.1:1521:emp";
connection conn = drivermanager.getconnection(url);

3)使用數(shù)據(jù)庫 url 和 properties 對象的調(diào)用方式

drivermanager.getconnection(string url, properties info);

properties 對象用來保存一組鍵值對,調(diào)用 getconnection() 方法時,將鍵值對傳遞給驅(qū)動程序。

import java.util.*;
string url = "jdbc:oracle:thin:@192.0.0.1:1521:emp";
properties info = new properties( );
info.put( "user", "username" );
info.put( "password", "password" );

connection conn = drivermanager.getconnection(url, info);

 

4. 關(guān)閉 jdbc 連接

在jdbc程序的結(jié)束,需要關(guān)閉所有的數(shù)據(jù)庫連接,以結(jié)束數(shù)據(jù)庫會話。但是,如果不關(guān)閉的話,java 垃圾收集器會關(guān)閉連接,并清除舊對象。但依托垃圾收集,特別是在數(shù)據(jù)庫編程,是非常差的編程習(xí)慣,應(yīng)該顯式地關(guān)閉數(shù)據(jù)庫連接。為了確保連接被關(guān)閉,可以在代碼中的 finally 塊執(zhí)行。

要關(guān)閉上面打開的連接,應(yīng)該調(diào)用close()方法,如下所示:

conn.close();

顯式地關(guān)閉連接,可以節(jié)約系統(tǒng)資源。

相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频