版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)庫(kù)訪(fǎng)問(wèn),夏汛,瀘職院信息工程系,學(xué)習(xí)目標(biāo),能夠使用JDBC訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),JDBC驅(qū)動(dòng)程序的類(lèi)型,JDBC-ODBC橋(訪(fǎng)問(wèn)access,只能通過(guò)JDBC-ODBC橋) 部分本地API,部分Java驅(qū)動(dòng)程序 JDBC網(wǎng)絡(luò)純Java驅(qū)動(dòng)程序 本地協(xié)議純Java驅(qū)動(dòng)程序,下載安裝Mysql, 下載mysql的社區(qū)版本MySQL Community Server,下載和使用Mysql JDBC驅(qū)動(dòng), Mysql的JDBC驅(qū)動(dòng)沒(méi)有包含在數(shù)據(jù)庫(kù)的安裝包中,需要單獨(dú)下載 進(jìn)入網(wǎng)址后,點(diǎn)擊“Connector/J”,下載Mysql的JDBC驅(qū)動(dòng) 在Eclipse項(xiàng)目文件夾下,建立文件夾lib,將JDBC驅(qū)動(dòng)
2、拷貝進(jìn)去,然后在Eclipse里該項(xiàng)目上右鍵點(diǎn)擊“屬性”“Java構(gòu)建路徑”“庫(kù)”,添加JAR,將mysql-connector-java-5.1.13-bin.jar選中即可。,JDBC API,訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的代碼: Class.forName(com.mysql.jdbc.Driver); Connection conn=DriverManager.getConnection(“jdbc:mysql:/localhost:3306/DB,root,123); Statement stmt=conn.createStatment(); ResultSet rs=stmt.executeQuer
3、y(select * from emp),JDBC API-加載與注冊(cè)JDBC驅(qū)動(dòng),1.Driver接口 java.sql.Driver是所有JDBC驅(qū)動(dòng)程序需要實(shí)現(xiàn)的接口,這個(gè)接口主要是提供給數(shù)據(jù)庫(kù)廠(chǎng)商使用,不同廠(chǎng)商該接口的類(lèi)名是不同的。 com.microsoft.jdbc.sqlserver.SQLServerDriver sql2000的驅(qū)動(dòng)類(lèi)名 com.microsoft.sqlserver.SQLServerDriver sql2005的驅(qū)動(dòng)類(lèi)名 oracle.jdbc.driver.OracleDriver Oracle的JDBC驅(qū)動(dòng)類(lèi)名 com.mysql.jdbc.Drive
4、r mysql的驅(qū)動(dòng)類(lèi)名 Driver接口中提供了一個(gè)Connect()方法,用來(lái)建立到數(shù)據(jù)庫(kù)的連接 Connection connect(String url,properties info) throws SQLException,JDBC API-加載與注冊(cè)JDBC驅(qū)動(dòng),2.加載與注冊(cè)JDBC驅(qū)動(dòng) 加載JDBC驅(qū)動(dòng)是調(diào)用Class類(lèi)的靜態(tài)方法forName(),向其傳遞要加載的JDBC驅(qū)動(dòng)的類(lèi)名。 DriverManager類(lèi)是驅(qū)動(dòng)程序管理類(lèi),負(fù)責(zé)管理驅(qū)動(dòng)程序,這個(gè)類(lèi)中所有方法都是靜態(tài)的,在DriverManager類(lèi)中提供了registerDriver()方法來(lái)注冊(cè)驅(qū)動(dòng)程序類(lèi)的實(shí)例。
5、public static void registerDriver(Driver driver) throws SQLException 通常不需要親自去調(diào)用registerDriver()方法來(lái)注冊(cè)驅(qū)動(dòng)程序類(lèi)的實(shí)例,因?yàn)閷?shí)現(xiàn)Driver接口的驅(qū)動(dòng)程序類(lèi)都包含了靜態(tài)代碼塊,在這個(gè)靜態(tài)代碼塊中,會(huì)調(diào)用DriverManager. registerDriver()方法來(lái)注冊(cè)自身的一個(gè)實(shí)例。,JDBC API-建立到數(shù)據(jù)庫(kù)的連接,3.建立到數(shù)據(jù)庫(kù)的連接 在DriverManger類(lèi)中提供了3個(gè)重載的getConnection()方法 Public static Connection getConne
6、ction(String url) throws SQLException Public static Connection getConnection(String url,String user,String password) throws SQLException Public static Connection getConnection(String url,Properties info) throws SQLException Mysql的URL:jdbc:mysql:/localhost:3306/databasename,JDBC API-訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),1.Staement
7、Staement createStaement() throws SQLException 該方法創(chuàng)建一個(gè)Staement對(duì)象,用于向數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句,沒(méi)有參數(shù)的SQL語(yǔ)句通常用Statement對(duì)象來(lái)執(zhí)行 Staement中定義了下列方法用于執(zhí)行SQL語(yǔ)句 ResultSet exeCuteQuery(String sql) throws SQLException 該方法執(zhí)行參數(shù)sql指定的sql語(yǔ)句,返回一個(gè)ResultSet對(duì)象, ResultSet用于查看執(zhí)行結(jié)果。 int executeUpdate(String sql) throws SQLException 該方法執(zhí)行參數(shù)s
8、ql指定的INSERT、UPDATE或者DELETE語(yǔ)句,也可執(zhí)行SQL DDL語(yǔ)句,如CREATE TABLE boolean execute(String sql) throws SQLException 該方法執(zhí)行返回多個(gè)結(jié)果集的SQL語(yǔ)句 int executeBatch() throws SQLException 該方法允許我們向數(shù)據(jù)庫(kù)提交一批命令,然后一起執(zhí)行。大量SQL語(yǔ)句的批量執(zhí)行可以顯著提高性能。如果所有命令都成功執(zhí)行,返回值是一個(gè)更新行數(shù)的數(shù)組。數(shù)組中每一個(gè)int元素是按照加入命令的先后順序來(lái)存儲(chǔ)的,表示了相應(yīng)命令的更新行數(shù)。可以使用addBatch()方法將SQL命令加入
9、到命令列表中。,JDBC API-訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),2.ResultSet ResultSet接口由數(shù)據(jù)庫(kù)廠(chǎng)商實(shí)現(xiàn), ResultSet對(duì)象維護(hù)了一個(gè)指向當(dāng)前數(shù)據(jù)行的游標(biāo),初始的時(shí)候,游標(biāo)在第一行之前,可以通過(guò)ResultSet對(duì)象的next()方法移動(dòng)游標(biāo)到下一行。 boolean next() throws SQLException ResultSet接口中定義了很多方法來(lái)獲取當(dāng)前行中的數(shù)據(jù),根據(jù)字段類(lèi)型的不同用不同的方法來(lái)獲取數(shù)據(jù)。方法略 每種方法,又提供了兩種形式的調(diào)用,一種是以列的索引作為參數(shù)(索引從1開(kāi)始),一種是以列的名字作為參數(shù)。 如果不知道要獲取的列數(shù)據(jù)類(lèi)型,可以一律采用getSt
10、ring()方法來(lái)得到String類(lèi)型的數(shù)據(jù),JDBC API-訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),3.PreparedStatement 在程序中傳遞的SQL語(yǔ)句在執(zhí)行前必須被預(yù)編譯,包括語(yǔ)句分析、代碼優(yōu)化等,然后才能被數(shù)據(jù)庫(kù)引擎執(zhí)行。如果重復(fù)執(zhí)行只有參數(shù)不同的SQL語(yǔ)句,是比較低效的。如果要用不同的參數(shù)來(lái)多次執(zhí)行同一個(gè)SQL語(yǔ)句,可以使用PreparedStatement的對(duì)象。 PreparedStatement pstmt=conn. preparedStatement(“insert employee values(?,?,?)”); pstmt.setInt(1,1); pstmt.setString(2
11、,”zhangsan”); pstmt.setDate(3,java.sql.Date.valueof(“2011-2-25”); pstmt.executeUpdate();,可滾動(dòng)結(jié)果集,之前通過(guò)Statement對(duì)象所創(chuàng)建的結(jié)果集只能向前滾動(dòng),即只能調(diào)用next()方法向前得到數(shù)據(jù)行,無(wú)法向后滾動(dòng)。 如果要獲得一個(gè)可滾動(dòng)的結(jié)果集,需要在創(chuàng)建Statement或PreparedStatement對(duì)象時(shí),調(diào)用Connection對(duì)象的另一個(gè)重載的createStatement()方法: Statement stmt=conn.createStatement(type, concurrency
12、);PreparedStatement pstmt=conn.preparedStatement(type, concurrency); 其中type可?。?ResultSet.TYPE_FORWARD_ONLY :結(jié)果集不能滾動(dòng) ResultSet.TYPE_SCROLL_INSENSITIVE:結(jié)果集可以滾動(dòng),但是對(duì)數(shù)據(jù)庫(kù)變化不敏感,數(shù)據(jù)庫(kù)查詢(xún)生成結(jié)果集后發(fā)生了變化,結(jié)果集不發(fā)生變化。 ResultSet.TYPE_SCROLL_SENSITIVE:結(jié)果集可以滾動(dòng),但是對(duì)數(shù)據(jù)庫(kù)變化敏感。 例如通過(guò)查詢(xún)返回了10行數(shù)據(jù),如果另一個(gè)程序刪除了其中的2行,那么這個(gè)結(jié)果集中就只有8行了,Concu
13、rrency可取: ResultSet.CONCUR_READ_ONLY 結(jié)果集不能用于更新數(shù)據(jù)庫(kù) ResultSet.CONCUR_UPDATABLE 結(jié)果集可以用于更新數(shù)據(jù)庫(kù),ResultSet接口為可滾動(dòng)結(jié)果集提供的方法,boolean isBeforeFirst () throws SQLException boolean isAfterLast () throws SQLException boolean isFirst() throws SQLException boolean isLast() throws SQLException 以上4種方法分別用于判斷游標(biāo)是否位于第一行之前、最后一行之后、第一行和最后一行,void beforeFirst() throws SQLException 該方法移動(dòng)游標(biāo)到結(jié)果集第一行之前 void afterLast() throws SQLException 該方法移動(dòng)游標(biāo)到結(jié)果集最后一行之后 boolean first() throws SQLException 該方法移動(dòng)游
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職園林技術(shù)(園林植物病蟲(chóng)害防治)試題及答案
- 2025年高職預(yù)防醫(yī)學(xué)(流行病調(diào)查)試題及答案
- 2025年高職專(zhuān)科(農(nóng)產(chǎn)品加工與質(zhì)量檢測(cè))食品檢測(cè)綜合測(cè)試題及答案
- 2025年大學(xué)電氣工程及其自動(dòng)化(智能控制技術(shù))試題及答案
- 2025年中職(客戶(hù)信息服務(wù))客戶(hù)溝通階段測(cè)試試題及答案
- 2025年高職土地資源管理(土地登記代理)試題及答案
- 2026年冶金工程師(冶金工藝)考題及答案
- 2026年注冊(cè)公用設(shè)備工程師給水排水(基礎(chǔ)考試下)試題及答案
- 2025年高職影視動(dòng)畫(huà)(二維動(dòng)畫(huà)制作)試題及答案
- 2025年中職(焊接技術(shù)應(yīng)用)焊接質(zhì)量控制綜合測(cè)試題及答案
- 電子數(shù)據(jù)取證分析師安全培訓(xùn)水平考核試卷含答案
- 上海市園林工程估算指標(biāo)(SHA2-12-2025)
- 涉水工程影響國(guó)家基本水文測(cè)站影響評(píng)價(jià)分析報(bào)告
- 黃芪中藥課件
- 沈陽(yáng)盛京軍勝農(nóng)業(yè)發(fā)展科技有限公司及所屬企業(yè)2025年面向社會(huì)招聘?jìng)淇碱}庫(kù)帶答案詳解
- 入駐直播協(xié)議書(shū)
- 血液凈化中心(透析室)年度述職報(bào)告
- 酒吧消防安培訓(xùn)
- 養(yǎng)老院消防培訓(xùn)方案2025年課件
- Smaart7產(chǎn)品使用說(shuō)明手冊(cè)
- 煙站述職報(bào)告(4篇)
評(píng)論
0/150
提交評(píng)論