J2EE的13个规范之(二) JDBC 及其使用
? ? ? ? 我想大家都知道ODBC是什么?ODBC(OpenDatabaseConnectivity。開放數(shù)據(jù)庫互連)是微軟公司開放服務(wù)結(jié)構(gòu)(WOSA,WindowsOpenServicesArchitecture)中有關(guān)數(shù)據(jù)庫的一個(gè)組成部分。它建立了一組規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口)。
?????? JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫連接)是一種用于運(yùn)行SQL語句的Java API,能夠?yàn)槎喾N關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問。它由一組用Java語言編寫的類和接口組成。事實(shí)上他們都是一樣的,為連接數(shù)據(jù)庫提供一組API!
? ? ? 理解JDBC
? ? ? 提供了統(tǒng)一方式訪問數(shù)據(jù)庫的API,提供獨(dú)立于平臺(tái)的數(shù)據(jù)庫訪問,對(duì)專有的數(shù)據(jù)庫問題的是透明的。
JDBC驅(qū)動(dòng)程序
?????? 我們來看一個(gè)圖,JAVA引用程序是通過驅(qū)動(dòng)呢來和數(shù)據(jù)庫進(jìn)行連接的。連接不同的數(shù)據(jù)庫載入不同的驅(qū)動(dòng)!
??????
?????? 比如我們連接sql server 數(shù)據(jù)庫,那么我們就要載入sql server 驅(qū)動(dòng)。首先要從網(wǎng)上下載對(duì)應(yīng)的驅(qū)動(dòng)包sqljdbc_4.0.2206.100_chs.tar假設(shè)你的數(shù)據(jù)庫是sql server 2008以后版本號(hào)的, 那么就能夠用這個(gè)一個(gè)(sqljdbc4.jar)就能夠了,當(dāng)然假設(shè)是曾經(jīng)的,你能夠查一下我沒研究過,但我想說(你真執(zhí)著!)。
?????? 看一下用Eclipse 連接sql server 數(shù)據(jù)庫的使用方法!有圖有真相。
?????? 首先打開Eclipse后,隨便的簡歷一個(gè)java 項(xiàng)目。然后隨便的建一個(gè)包。包下邊在創(chuàng)建一個(gè)類!
??????
?????? 然后右鍵單擊項(xiàng)目名,選擇Build Path? 然后在選擇Configure Build Path….
?
?????? 然后選擇上邊的Libraries,單擊Add External JARs….?然后找到你從網(wǎng)上下載好的sqljdbc4.jar文件, 一定要下載好正確的文件。否則你會(huì)非常懊悔!
所以建議你從這里下載(標(biāo)準(zhǔn)的sqljdbc4.jar)。
?????? 確定好有sqljdbc.jar文件以后(一定要看好后綴名),就能夠單擊OK了。
?????? 然后如圖所看到的,當(dāng)寫代碼的時(shí)候的驅(qū)動(dòng)的路徑就放在java.sql.Driver文件里,到時(shí)候?yàn)榱朔乐箤戝e(cuò),能夠來這里粘貼!
而他真實(shí)使用的驅(qū)動(dòng)類就放在com.microsoft.sqlserver.jdbc的包中,想看一下直接進(jìn)去找,里邊類有非常多,詳細(xì)什么作用直接去網(wǎng)上查就能夠了。
? ? ??
?????? 然后就能夠進(jìn)行編碼了,編碼前首先要引入幾個(gè)文件,java.sql.Connection; java.sql.DriverManager; java.sql.PreparedStatement; java.sql.ResultSet;在程序中就能夠直接使用這幾個(gè)類了!
<span style="font-size:18px;">package com.tgb;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet;public class jdbcConn {public static void main(String[] args) throws Exception {// TODO Auto-generated method stubjdbcConn.test();}public static void test() throws Exception{Connection conn = null;PreparedStatement ps=null;ResultSet rs= null;try {//定義驅(qū)動(dòng)的路徑,該路徑在services下的java.sql.Driver中。String driverPath="com.microsoft.sqlserver.jdbc.SQLServerDriver";//載入驅(qū)動(dòng)Class.forName(driverPath);//是從當(dāng)前JVM的載入器(可能多個(gè))中選取適合的數(shù)據(jù)庫驅(qū)動(dòng)并獲得連接conn=DriverManager .getConnection("jdbc:sqlserver://localhost:1433; DatabaseName=DB_ChargeSystem","sa","123456");//SQL語句String sql = "select * from T_UserInfo";//向已經(jīng)連接的數(shù)據(jù)庫中發(fā)送sql語句,該sql語句在PreparedStatement對(duì)象中已經(jīng)驚醒了編譯!ps = conn.prepareStatement(sql);//返回sql語句的運(yùn)行結(jié)果。rs = ps.executeQuery(); //對(duì)結(jié)果進(jìn)行操作,現(xiàn)將他打印出來, 在實(shí)際中進(jìn)行更復(fù)雜的操作!while (rs.next()) {System.out.println(rs.getString(1));}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}finally{//關(guān)閉全部打開的連接,try {rs.close();} catch (Exception e2) {// TODO: handle exceptione2.printStackTrace();}finally{try {ps.close();} catch (Exception e3) {// TODO: handle exceptione3.printStackTrace();}finally{conn.close();}}}} }</span>? ? ? ?這個(gè)僅僅是一個(gè)簡單的實(shí)例。在實(shí)際的應(yīng)用中我們還要好好的對(duì)這種方法進(jìn)行進(jìn)一步的封裝。然后就能夠代碼簡化非常多。
?????? 上邊的實(shí)例為sql server數(shù)據(jù)庫的連接。事實(shí)上其它數(shù)據(jù)庫的連接跟這個(gè)本質(zhì)上是一樣的。雖然JDBC在JAVA語言層面實(shí)現(xiàn)了統(tǒng)一,但不同數(shù)據(jù)庫仍舊有很多差異。
為了更好地實(shí)現(xiàn)跨數(shù)據(jù)庫操作,于是誕生了Hibernate目,Hibernate是對(duì)JDBC的再封裝,實(shí)現(xiàn)了對(duì)數(shù)據(jù)庫操作更寬泛的統(tǒng)一和更好的可移植性。
?????? 期待進(jìn)一步的學(xué)習(xí)!
轉(zhuǎn)載于:https://www.cnblogs.com/yxwkf/p/5174371.html
總結(jié)
以上是生活随笔為你收集整理的J2EE的13个规范之(二) JDBC 及其使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Thinkphp kindeditor
- 下一篇: IIS虚拟目录实现与文件服务器网络驱动器