首先要知道jdbc:使用Java代碼發送sql語句的技術就是jdbc技術。即jdbc是一個介面,用於不同的資料庫(oracle、mysql、sqlserver。。)的操作。使用jdbc發送sql語句的前提:
登入資料庫伺服器(串連資料庫伺服器)
資料庫的IP地址
連接埠
資料庫使用者名稱
密碼
JDBC的URL=協議名+子協議名+資料來源名。
a 協議名總是“jdbc”。
b 子協議名由JDBC驅動程式的編寫者決定。
c 資料來源名也可能包含使用者與口令等資訊;這些資訊也可單獨提供。
幾種常見的資料庫連接
——————————-oracle——————
驅動:oracle.jdbc.driver.OracleDriver
URL:jdbc:oracle:thin:@machine_name:port:dbname
註:machine_name:資料庫所在的機器的名稱;
port:連接埠號碼,預設是1521
——————————-mysql——————-
驅動:com.mysql.jdbc.Driver
URL:jdbc:mysql://machine_name:port/dbname
註:machine_name:資料庫所在的機器的名稱(本機一般預設為localhost);
port:連接埠號碼,預設3306
—————————SQL Server——————
驅動:com.microsoft.jdbc.sqlserver.SQLServerDriver
URL:jdbc:microsoft:sqlserver://<:port>;DatabaseName=
註:machine_name:資料庫所在的機器的名稱;
port:連接埠號碼,預設是1433
————————–DB2————————–
驅動:com.ibm.db2.jdbc.app.DB2Driver
URL:jdbc:db2://<:port>/dbname
註:machine_name:資料庫所在的機器的名稱;(port預設5000)
這裡以Mysql為例。
所需jar包:mysql-connector-java-5.1.7-bin.jar
代碼如下:
import java.sql.Connection;import java.sql.Driver;import java.sql.DriverManager;import java.util.Properties;import org.junit.Test;public class Demo1{ //首先串連到資料庫的URL private String url = "jbdc:mysql://localhost:3306/demo";/*jdbc協議:資料庫子協議:主機:連接埠/串連的資料庫*/ private String user = "root";//資料庫使用者名稱 private String password = "root";//資料庫密碼 /* 第一種方法 */ @Test public void test1() throws Exception{ //1.建立驅動程式類對象 Driver driver = new com.mysql.jdbc.Driver();//需要匯入上面提到的jar包 //設定使用者名稱和密碼 Properties pro = new Properties(); pro.setProperty("user",user); pro.setProperty("password",password); //2.串連資料庫 Connection conn = driver.connect(url,pro); //測試是否串連成功 System.out.println(conn); } /* 第二種方法(使用驅動管理器類串連資料庫) */ @Test public void test2() throws Exception{ //建立驅動程式類對象 Dirver dirver = new com.mysql.jdbc.Dirver(); /*Mysql*/ //Driver driver2 = new com.oracle.jdbc.Driver();/*oracle*/ //1.註冊驅動程式(可以註冊多個) DirverManager.registerDirver(dirver); //2.建立串連到資料庫 Connection conn = DriverManager.getConnection(url, user, password); //測試是否串連成功 System.out.println(conn); } }
運行後,成功結果應該會顯示類似資訊:
分析:在test2方法中,建立驅動程式類對象new com.mysql.jdbc.Dirver(); 後在進行註冊驅動程式DirverManager.registerDirver(dirver); 實際上已經註冊了兩次。因為在Driver.class檔案中有如下一段靜態代碼塊:
// --------------------------------------------- // // Register ourselves with the DriverManager // static { try { java.sql.DriverManager.registerDriver(new Driver()); } catch (SQLException E) { throw new RuntimeException("Can't register driver!"); } }
即在進行建立驅動程式類對象Driver的時候就執行了registerDriver(new Driver());,所以第二種方法中省略DirverManager.registerDirver(dirver);語句也正確。
基於以上分析,可以採用 通過得到位元組碼對象的方式載入靜態代碼塊,從而註冊驅動程式,即把建立驅動類對象語句換成Class.forName(“com.mysql.jdbc.Driver”);括弧內雙引號語句為Dirver.Class檔案所在的包名(上面所提到的jar包裡面)即可。完整代碼如下:
@Test public void test3() throws Exception{ //通過得到位元組碼對象的方式載入靜態代碼塊,從而註冊驅動程式 Class.forName("com.mysql.jdbc.Driver"); //2.串連到具體的資料庫 Connection conn = DriverManager.getConnection(url, user, password); System.out.println(conn); }
據此,這部分的串連已經成功了。對代碼進行簡單的分析有助於理解記憶而不是死記硬背達到活學活用。本例以Mysql資料庫進行,其他資料庫類似。