【JDBC】通過JDBC的方法連接Oracle數據庫並進行簡單操作(含demo)+Class.forName("")與ojdbcX.jar的區別和聯繫

!!!!!不得不吐槽一句!使用校園網,大概率出現無法保存文章的情況!難道是Markdown編輯器下在編輯的文章不斷自動保存,造成校園網過濾其IP?改天研究研究!

什麼是JDBC?
JDBC又稱Java DataBase Connectivity,顧名思義就是Java數據庫連接。至於是什麼,我們來將其使用一次就大概明白了。

下面以Oracle爲例:

開始:
過程:
①載入JDBC驅動程序
②加載數據庫驅動程序
③創建連接對象
④創建Statement對象
⑤Statement執行SQL語句
⑥逆向關閉連接

0.我們先在Eclipse建一個Java項目吧!
有些童鞋糾結創建什麼項目,其實目前都可以,能編譯執行Java文件即可。
熟知宇某截圖

1.載入JDBC驅動程序
我這裏使用的是Oracle數據庫,所以在main函數中加載語句如下:
Class.forName("oracle.jdbc.driver.OracleDriver");
如果是MYSQL數據庫,可以這樣: Class.forName("com.mysql.jdbc.Driver");

2.加載數據庫驅動程序
這裏與第一步驟的加載不知道是不是同一個東西,等下操作到最後步驟的時候我們刪掉其中一個試一下。
這裏下載其中一個即可。
ojdbc6.jar驅動下載
ojdbc14.jar驅動下載
下載完,我們在項目中加載它:
“右擊項目名稱”→“構建路徑”→“配置構建路徑”→選項“庫”→“添加外部JAR”→添加剛剛下載的 ojdbc6.jar包。如圖:
在這裏插入圖片描述
在這裏插入圖片描述

3.創建連接對象
先使用DriverManager類聲明一個Connection對象並連接:
Connection con = DriverManager.getConnection(jdbcUrl, user, password);
這裏說一下什麼是DriverManager:DriverManager專門用於檢查在Java程序與JDBC驅動程序之間是否可以建立連接。

其中getConnection(jdbcUrl, user, password);的三個參數分別是URL地址、用戶名、密碼。
而URL地址較爲特殊:協議名 + IP地址(域名) + 端口 + 數據庫名稱;
如Oracle的寫法:jdbcUrl = "jdbc:oracle:thin:@localhost:1521:Szymou";

4.創建Statement對象
Statement對象通俗說就是可以執行sql語句。
如:
Statement createStatement = con.createStatement();
String sql = "select * from CLASSINFO";
ResultSet executeQuery = createStatement.executeQuery(sql);

5.Statement執行SQL語句
ResultSet executeQuery = createStatement.executeQuery(sql);
這裏executeQuery 在sql語句執行過後賦有了相應操作的結果。
比如sql語句爲select查詢數據庫語句,可以通過executeQuery.getString()等方法來提取結果。

6.逆向關閉連接(這裏可能誤,如有請留言告知!)
關閉executeQuery executeQuery.close();
關閉Statement createStatement.close();
關閉數據庫 con.close();

代碼如下:
Jdbc.java

package szymou;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 * @author szymou
 *
 */
public class Jdbc {

	public static void main(String[] args) {
		// TODO 自動生成的方法存根
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");//①載入JDBC驅動程序
			System.out.println("數據庫驅動加載成功");
			//數據庫用戶名爲nue,密碼爲1;你們的自己改
			Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:Szymou", "nue", "1");//③創建連接對象
			System.out.println("數據庫連接成功");
			Statement createStatement = con.createStatement();//④創建Statement對象
			String sql = "select * from CLASSINFO";
			ResultSet executeQuery = createStatement.executeQuery(sql);//⑤Statement執行SQL語句

			while(executeQuery.next()) {
				String s1 = executeQuery.getString(1);
				String s2 = executeQuery.getString(2);
				String s3 = executeQuery.getString(3);
				String s4 = executeQuery.getString(4);
				String s5 = executeQuery.getString(5);
				String s6 = executeQuery.getString(6);
				System.out.print(s1 + " ");
				System.out.print(s2 + " ");
				System.out.print(s3 + " ");
				System.out.print(s4 + " ");
				System.out.print(s5 + " ");
				System.out.println(s6 + " ");
//				String classid = executeQuery.getString("classname");
//				System.out.println(classid);

			}
				//⑥逆向關閉連接
				executeQuery.close();
				createStatement.close();
				con.close();
			
		} catch (Exception e) {
			// TODO 自動生成的 catch 塊
			e.printStackTrace();
		}
	}

}

本章節demo:JDBC_study.zip

下面是測試時間:

有些童鞋還記住我們還有個測試沒做對吧?
第一步驟的Class.forName("oracle.jdbc.driver.OracleDriver");和第二步驟的項目加載入ojdbcX.jar有何關聯?同一個東西嗎?一頭霧水。
第一次嘗試:
在項目加載ojdbc6.jar!對,ojdbc6.jar
在代碼註釋掉Class.forName("oracle.jdbc.driver.OracleDriver");
運行一遍…發現還能執行。
在這裏插入圖片描述
第二次嘗試:
在項目中卸掉ojdbc6.jar
恢復Class.forName("oracle.jdbc.driver.OracleDriver");
運行…提示錯誤
在這裏插入圖片描述

第三次嘗試
在項目中加載ojdbc14.jar
恢復Class.forName("oracle.jdbc.driver.OracleDriver");
運行成功
在這裏插入圖片描述

第四次嘗試:
在項目中加載ojdbc14.jar
在代碼註釋掉Class.forName("oracle.jdbc.driver.OracleDriver");
運行…提示錯誤
在這裏插入圖片描述

第五次嘗試
在項目中卸掉ojdbc6.jar
在代碼註釋掉Class.forName("oracle.jdbc.driver.OracleDriver");
運行…卻發現和第四次嘗試一樣的錯誤提示
在這裏插入圖片描述

第四次第五次的嘗試可以猜測出:Class.forName("oracle.jdbc.driver.OracleDriver");是用於加載ojdbcX.jar文件的。

那爲什麼第一次第四次的都是加載ojdbcX.jar、註釋Class.forName("");兩者情況一致,怎麼前者運行成功,而後者失敗呢?這可以猜測出:
可能是ojdbc6.jar和ojdbc14.jar版本不一樣,前者可以自動載入程序中,而後者出於安全性問題,去除了自動載入的方法。

  • DAO設計模式的使用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章