!!!!!不得不吐槽一句!使用校園網,大概率出現無法保存文章的情況!難道是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設計模式的使用