Java連接Oracle數(shù)據(jù)庫實例解析
數(shù)據(jù)庫的操作是當(dāng)前系統(tǒng)開發(fā)必不可少的開發(fā)部分之一,尤其是在現(xiàn)在的大數(shù)據(jù)時代,數(shù)據(jù)庫尤為重要。但是你真的懂得Java與數(shù)據(jù)庫是怎么連接的么?
先給大家一個數(shù)據(jù)庫連接的簡單實例:
package com.java.dbtest; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class TestConnection implements DBTest{ public void SelectUser(){ //設(shè)定數(shù)據(jù)庫驅(qū)動,數(shù)據(jù)庫連接地址、端口、名稱,用戶名,密碼 String driverName="oracle.jdbc.driver.OracleDriver"; String url="jdbc:oracle:thin:@localhost:1521:BJPOWERNODE"; //test為數(shù)據(jù)庫名稱,1521為連接數(shù)據(jù)庫的默認(rèn)端口 String user="system"; //aa為用戶名 String password="bjpowernode"; //123為密碼 PreparedStatement pstmt = null; ResultSet rs = null; //數(shù)據(jù)庫連接對象 Connection conn = null; try { //反射Oracle數(shù)據(jù)庫驅(qū)動程序類 Class.forName(driverName); //獲取數(shù)據(jù)庫連接 conn = DriverManager.getConnection(url, user, password); //輸出數(shù)據(jù)庫連接 System.out.println(conn); //定制sql命令 String sql = "select * from t_user where user_id = ?"; //創(chuàng)建該連接下的PreparedStatement對象 pstmt = conn.prepareStatement(sql); //傳遞第一個參數(shù)值 root,代替第一個問號 pstmt.setString(1, "root"); //執(zhí)行查詢語句,將數(shù)據(jù)保存到ResultSet對象中 rs = pstmt.executeQuery(); //將指針移到下一行,判斷rs中是否有數(shù)據(jù) if(rs.next()){ //輸出查詢結(jié)果 System.out.println("查詢到名為【" + rs.getString("user_id") + "】的信息,其密碼為:" + rs.getString("password")); }else{ //輸出查詢結(jié)果 System.out.println("未查詢到用戶名為【" + rs.getString("user_id") + "】的信息"); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }finally{ try{ if(rs != null){ rs.close(); } if(pstmt != null){ pstmt.close(); } if(conn != null){ conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } public static void main(String[] args){ new TestConnection().SelectUser(); } }
在main函數(shù)中,右鍵,選擇“Run as”=>"Java Application",就會運(yùn)行該程序段,在Console中,可以看到運(yùn)行結(jié)果,如果給出一串類似于“oracle.jdbc.driver.T4CConnection@7c242f04”這樣的字符串,就說明你連接成功了。運(yùn)行結(jié)果如圖:
下面我們來簡單解剖一下這段程序。
這段程序是Java連接Oracle數(shù)據(jù)庫的實例,采用jdbc來完成連接數(shù)據(jù)庫的操作,所以需要引入ojdbc14.jar。在操作前,首先得先得到數(shù)據(jù)庫驅(qū)動類的對象,通過驅(qū)動對象拿到數(shù)據(jù)庫連接對象。
其中Class.forName(driverName)就是應(yīng)用類反射機(jī)制,加載驅(qū)動程序的。DriverManager 類是 JDBC 的管理層,作用于用戶和驅(qū)動程序之間。它跟蹤可用的驅(qū)動程序,并在數(shù)據(jù)庫和相應(yīng)驅(qū)動程序之間建立連接。
一般只需要在類中直接使用方法DriverManager.getConnection,即可建立與數(shù)據(jù)庫的連接
PreparedStatement 接口繼承Statement,是用來執(zhí)行數(shù)據(jù)庫操作的類。PreparedStatement在多次調(diào)用時的效率要比Statement高很多,所以很多人都主張以PreparedStatement代替Statement。
在接下來的博文中,會詳細(xì)介紹一下這點(diǎn)《深入 理解 Statement 和 PreparedStatement》。PreparedStatement可以看做.net中的Command的類。
ResultSet 接口在很多語言中都出現(xiàn)過,它主要來存放查詢到的數(shù)據(jù)。每次查詢到數(shù)據(jù)后,Java語言中通常使用next()方法來讀取數(shù)據(jù)。
相關(guān)文章
java集合框架 arrayblockingqueue應(yīng)用分析
ArrayBlockingQueue是一個由數(shù)組支持的有界阻塞隊列。此隊列按 FIFO(先進(jìn)先出)原則對元素進(jìn)行排序。隊列的頭部 是在隊列中存在時間最長的元素2012-11-11java map轉(zhuǎn)Multipart/form-data類型body實例
這篇文章主要介紹了java map轉(zhuǎn)Multipart/form-data類型body實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05SpringBoot @JsonDeserialize自定義Json序列化方式
這篇文章主要介紹了SpringBoot @JsonDeserialize自定義Json序列化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10springboot啟動時如何指定spring.profiles.active
這篇文章主要介紹了springboot啟動時如何指定spring.profiles.active問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04Java動態(tài)規(guī)劃之硬幣找零問題實現(xiàn)示例
本文主要介紹了Java動態(tài)規(guī)劃之硬幣找零問題實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08