Java如果通過(guò)jdbc操作連接oracle數(shù)據(jù)庫(kù)
1、jdbc
1) 含義:JDBC是java語(yǔ)言連接數(shù)據(jù)庫(kù),Java Date Base Connectivity
2) jdbc的本質(zhì):在編程時(shí)java程序會(huì)去連接不同的數(shù)據(jù)庫(kù),而每個(gè)數(shù)據(jù)庫(kù)的底層的實(shí)現(xiàn)原理是不同的,所以我們所編寫(xiě)的程序應(yīng)該是面向一套規(guī)范去編寫(xiě)的,這套java語(yǔ)言連接數(shù)據(jù)庫(kù)的規(guī)范就是jdbc
A、sun公司:
jdbc接口是一套由Sun公司制定的一套Class文件規(guī)范,用于規(guī)范程序員;
B、數(shù)據(jù)庫(kù)廠商:
編寫(xiě)jdbc接口的實(shí)現(xiàn)類(lèi),并將這些實(shí)現(xiàn)類(lèi)打成jar包,并發(fā)布;這些jar包被稱(chēng)為連接數(shù)據(jù)庫(kù)的驅(qū)動(dòng)。
C、編程的程序員:
從各類(lèi)型的數(shù)據(jù)庫(kù)官網(wǎng)上面下載jar包,并配置到環(huán)境變量Classpath中。若果沒(méi)有把class文件配置到環(huán)境變量classPath,那么代表你只有接口和調(diào)用數(shù)據(jù),而沒(méi)有接口的實(shí)現(xiàn)類(lèi),沒(méi)有實(shí)現(xiàn)類(lèi)程序是無(wú)法運(yùn)行的。
3) oracle10gi下JDBC驅(qū)動(dòng)包介紹:
Oracle 數(shù)據(jù)庫(kù) 10g 第 2 版 (10.2.0.1.0) JDBC 驅(qū)動(dòng)程序針對(duì)所有平臺(tái)的 JDBC 瘦客戶(hù)端
classes12.jar 用于 JDK 1.2 和 JDK 1.3
classes12_g.jar 與 classes12.jar 一樣,除了類(lèi)通過(guò)“javac -g”編譯并包含一些跟蹤信息
classes12dms.jar 與 classes12.jar 一樣,除了另外包含支持 Oracle 動(dòng)態(tài)監(jiān)視服務(wù)的代碼。
classes12dms_g.jar 與 classes12dms.jar 一樣,除了類(lèi)通過(guò)“javac -g”編譯并包含一些跟蹤信息。ojdbc14.jar 用于 JDK 1.4 和 1.5 的類(lèi)
ojdbc14_g.jar 與 ojdbc14.jar 一樣,除了類(lèi)通過(guò)“javac -g”編譯并包含一些跟蹤信息。
ojdbc14dms.jar 與 ojdbc14.jar 一樣,除了另外包含支持 Oracle 動(dòng)態(tài)監(jiān)視服務(wù)的代碼。
ojdbc14dms_g.jar 與 ojdbc14dms.jar 一樣,除了類(lèi)通過(guò)“javac -g”編譯并包含一些跟蹤信息。
orai18n.jar 用于 JDK 1.2、1.3、1.4 和 1.5 的 NLS 類(lèi)。該 jar 文件代替舊的 nls_charset jar/zip 文件。
ons.jar 供純 Java 客戶(hù)端 Oracle 通知服務(wù) (ONS) 后臺(tái)程序使用。
demo.tar 或 demo.zip 包含 JDBC 示例程序
|示例:java連接數(shù)據(jù)庫(kù)進(jìn)行查詢(xún)操作|
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class JDBCTest01 { public static void main(String[] args) { Connection con=null; PreparedStatement prs=null; ResultSet rs=null; try { //步驟1、加載oracle驅(qū)動(dòng)程序 Class.forName("oracle.jdbc.OracleDriver"); String url="jdbc:oracle:thin:@10.125.4.55:1521:orcl"; String user="zhangjunbo"; String password="zjb123"; String sql="select * from student where xuehao='2'"; try { //步驟2、獲取連接 con=DriverManager.getConnection(url, user, password); System.out.println(con); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { //步驟3、實(shí)例化預(yù)編譯語(yǔ)句 prs=con.prepareStatement(sql); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } //步驟4、執(zhí)行查詢(xún) try { rs=prs.executeQuery(sql); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { //步驟5、處理查詢(xún)結(jié)果集 while(rs.next()){ System.out.println("姓名:"+rs.getString("xingming")+"\n"+"生日:"+rs.getString("birthday")); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ //逐一將上面的幾個(gè)對(duì)象關(guān)閉,不關(guān)閉的話(huà)會(huì)影響性能、并且占用資源 //注意關(guān)閉的順序,最后使用的最先關(guān)閉 try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { prs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
|示例:通過(guò)配置文件連接數(shù)據(jù)庫(kù)進(jìn)行增刪改查|
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Properties; public class JDBCTest02 { public static void main(String[] args) throws ClassNotFoundException, SQLException { //創(chuàng)建輸入流 FileReader fReader=null; try { fReader=new FileReader("src/JDBC/db.properties"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } //創(chuàng)建map集合對(duì)象 Properties properties=new Properties(); //加載(將輸入流中的資源加載到屬性類(lèi)對(duì)象中) try { properties.load(fReader); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } String driver=properties.getProperty("driver"); String url=properties.getProperty("url"); String username=properties.getProperty("username"); String password=properties.getProperty("password"); Class.forName(driver); Connection connection=DriverManager.getConnection(url, username, password); //對(duì)student表進(jìn)行修改操作 String sql="update student set xingming=? where xuehao=?"; PreparedStatement pre=connection.prepareStatement(sql); pre.setString(1,"紛紛"); pre.setString(2, "3"); String sqlInsert="insert into student values(20,'寂靜','男','','12000',3,20,21)"; PreparedStatement pre2=connection.prepareStatement(sqlInsert); int insertInt=pre2.executeUpdate(); int updateInt=pre.executeUpdate(); System.out.println(updateInt+insertInt); pre.close(); connection.close(); } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java開(kāi)發(fā)Oracle數(shù)據(jù)庫(kù)連接JDBC Thin Driver 的三種方法
- Java使用Jdbc連接Oracle執(zhí)行簡(jiǎn)單查詢(xún)操作示例
- Java使用JDBC或MyBatis框架向Oracle中插入XMLType數(shù)據(jù)
- Java使用JDBC連接Oracle_MSSQL實(shí)例代碼
- Java與Oracle實(shí)現(xiàn)事務(wù)(JDBC事務(wù))實(shí)例詳解
- java使用jdbc鏈接Oracle示例類(lèi)分享
- java基于JDBC連接Oracle 11g Release2實(shí)例分析
- Java使用JDBC實(shí)現(xiàn)Oracle用戶(hù)認(rèn)證的方法詳解
- JAVA使用JDBC連接oracle數(shù)據(jù)庫(kù)的詳細(xì)過(guò)程
相關(guān)文章
Java反射 JavaBean對(duì)象自動(dòng)生成插入,更新,刪除,查詢(xún)sql語(yǔ)句操作
這篇文章主要介紹了Java反射 JavaBean對(duì)象自動(dòng)生成插入,更新,刪除,查詢(xún)sql語(yǔ)句操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08SpringBoot?AOP中JoinPoint的使用方式和通知切點(diǎn)表達(dá)式
這篇文章主要介紹了SpringBoot?AOP中JoinPoint的使用方式和通知切點(diǎn)表達(dá)式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05詳解用Spring Boot Admin來(lái)監(jiān)控我們的微服務(wù)
這篇文章主要介紹了用Spring Boot Admin來(lái)監(jiān)控我們的微服務(wù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Java實(shí)現(xiàn)批量導(dǎo)出導(dǎo)入數(shù)據(jù)及附件文件zip包
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)批量導(dǎo)出導(dǎo)入數(shù)據(jù)及附件文件zip包的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一2022-09-09淺談virtual、abstract方法和靜態(tài)方法、靜態(tài)變量理解
下面小編就為大家?guī)?lái)一篇淺談virtual、abstract方法和靜態(tài)方法、靜態(tài)變量理解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02Springboot處理配置CORS跨域請(qǐng)求時(shí)碰到的坑
本篇文章介紹了我在開(kāi)發(fā)過(guò)程中遇到的一個(gè)問(wèn)題,以及解決該問(wèn)題的過(guò)程及思路,通讀本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下2021-09-09MyBatis-Plus updateById不更新null值的方法解決
用Mybatis-Plus的updateById()來(lái)更新數(shù)據(jù)時(shí),無(wú)法將字段設(shè)置為null值,更新后數(shù)據(jù)還是原來(lái)的值,本文就來(lái)詳細(xì)的介紹一下解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08spring security認(rèn)證異常后返回中文提示的問(wèn)題
這篇文章主要介紹了spring security認(rèn)證異常后返回中文提示的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02