JDBC串連Oracle資料庫,jdbcoracle資料庫

來源:互聯網
上載者:User

JDBC串連Oracle資料庫,jdbcoracle資料庫

我記得大二的時候,我們上java課程,當時老師就說了JDBC這個東西,也沒怎麼好好學,直到現在,我也不直到JDBC是什麼玩意,就知道這玩意可以從資料庫提取資料,那麼JDBC到底是什麼呢?

JDBC是Java DataBase Connectivity的縮寫,含義意思是java資料庫連接,不需要多解釋了,我感覺!

那麼我們如何去做這樣子的一個串連呢?用過一次之後就會發現,其實很簡單,記住幾個步驟,還有就是匯入必要的驅動包就可以了,下面是幾個重要的步驟:

第一步,你的項目環境中必須要匯入必要的資料庫驅動包,我這裡以Oracle 11g資料庫為例子寫的Demo,我給項目裡匯入並且添加到WEB項目的ClassPath中去了,Oracle的話,目前置入class12.jar包就可以了。

第二步,這就開始寫代碼了,執行個體化你的驅動包:

      Class.forName("oracle.jdbc.driver.OracleDriver");//其他資料庫就修改一下字串參數值就行了
第三步:建立串連,這裡我們需要使用到的DriverManager驅動管類類

      Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:cgzs", "system", "hj123");   //剛開始學的話,老師們講的都是這個操作類,其實現在已經很少有人使用這個了,詳細的,我還有另一篇部落格裡面會有介紹
第四步:驅動執行個體化了,也擷取到串連了,那麼就開始查詢資料庫吧,我們需要一個資料庫sql狀態物件,還需要一個查詢結果集接收對象,分別是Statement對象和ResultSet對象

Statement s = conn.createStatement();ResultSet rs = null;rs = s.executeQuery("select ID from A");while(rs.next()){System.out.println(rs.getString("ID"));}
最後一步:不要忘記了,我們前面使用的Statement對象,ResultSet對象以及Connection對象都是需要關閉串連的,不然就完蛋了。

好了,就這麼些了,還是很簡單呢,下面貼上我寫了一個完整的Demo吧!

public class Demo {/** * @param args * @throws SQLException * @throws ClassNotFoundException */public static void main(String[] args) throws SQLException,ClassNotFoundException {// TODO Auto-generated method stub// 執行個體化驅動Class.forName("oracle.jdbc.driver.OracleDriver");// 建立串連Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:cgzs", "system", "hj123");// statement對象用於與資料庫進行互動Statement s = conn.createStatement();// 執行查詢操作ResultSet rs = s.executeQuery("select * from V_CANCLE");while (rs.next()) {// 列印查詢結果System.out.println(rs.getString("WWID"));}// 關閉串連,至關重要conn.close();s.close();rs.close();}}










jdbc串連oracle資料庫

Exception in thread "main" java.lang.NoClassDefFoundError: oracle/dms/console/DMSConsole
主要看這一行,NoClassDefFoundError
NoClassDefFoundError 這個錯誤出現時一般是這兩種情況:

1. Windows 不區分檔案名稱大小寫,你把檔案名稱搞錯了,它和 public class 名字有著大小寫不同。
2. 一個類在 static { } 這個初始化代碼塊或 static Clz instance= new Clz(); 時 new Clz() 拋出了異常。這樣一個 class 在第一次載入後會自動執行 class 層級的初始化代碼,比如靜態變數和 static { } 中的代碼,這個時候如果有一個異常未處理就導致 class 初始化失敗,這個 class 確實存在,載入成功了,但載入後 define 這個 class 時出錯了。所以錯誤的名字叫 NoClassDefFoundError 而不是 ClassNotFound,它確實 found 了,但 define 失敗。

從你的案例來看,肯定不是第1種情況。
因此你需要做的事情時,從日誌中找出來到底什麼原因導致 Hibernate 初始化的時候出錯了。你的代碼有沒有可能把某個 Hibernate 初始化的代碼直接 try { ... } catch (Exception e) { /* 新手經常在此處什麼也不做,連日誌都不列印一個 */} ,如果有新手寫出這樣的代碼你是沒辦法猜出原因的,你唯一的辦法只有人工檢查代碼,一行一行地看。
 
jdbc串連oracle資料庫

Exception in thread "main" java.lang.NoClassDefFoundError: oracle/dms/console/DMSConsole
主要看這一行,NoClassDefFoundError
NoClassDefFoundError 這個錯誤出現時一般是這兩種情況:

1. Windows 不區分檔案名稱大小寫,你把檔案名稱搞錯了,它和 public class 名字有著大小寫不同。
2. 一個類在 static { } 這個初始化代碼塊或 static Clz instance= new Clz(); 時 new Clz() 拋出了異常。這樣一個 class 在第一次載入後會自動執行 class 層級的初始化代碼,比如靜態變數和 static { } 中的代碼,這個時候如果有一個異常未處理就導致 class 初始化失敗,這個 class 確實存在,載入成功了,但載入後 define 這個 class 時出錯了。所以錯誤的名字叫 NoClassDefFoundError 而不是 ClassNotFound,它確實 found 了,但 define 失敗。

從你的案例來看,肯定不是第1種情況。
因此你需要做的事情時,從日誌中找出來到底什麼原因導致 Hibernate 初始化的時候出錯了。你的代碼有沒有可能把某個 Hibernate 初始化的代碼直接 try { ... } catch (Exception e) { /* 新手經常在此處什麼也不做,連日誌都不列印一個 */} ,如果有新手寫出這樣的代碼你是沒辦法猜出原因的,你唯一的辦法只有人工檢查代碼,一行一行地看。
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.