




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第9章Java的數(shù)據(jù)庫編程Java應用開發(fā)與實踐第二部分
酒店管理系統(tǒng)的設計學習目標理解JDBC的功能掌握配置JDBC驅動程序的方法掌握MySQL數(shù)據(jù)庫的安裝與使用方法掌握使用JDBC訪問數(shù)據(jù)庫的方法9.1JDBC簡介9.2MySQL數(shù)據(jù)庫的安裝與使用9.3使用JDBC訪問數(shù)據(jù)庫9.4實訓9數(shù)據(jù)庫的增刪改查目錄9.1JDBC簡介JDBC(JavaDatabaseConnectivity)即Java數(shù)據(jù)庫連接,是Java語言中用來規(guī)范客戶端程序如何來訪問數(shù)據(jù)庫的應用程序接口,它提供了查詢以及增、刪、改等更新數(shù)據(jù)庫中數(shù)據(jù)的方法。JDBC也是SunMicrosystems的商標,我們通常說的JDBC是面向關系型數(shù)據(jù)庫的。JDBC制定了統(tǒng)一訪問各類關系數(shù)據(jù)庫的標準接口,為各個數(shù)據(jù)庫廠商提供了標準接口的實現(xiàn)打下了基礎。Java中的包、類、JDBC是連接數(shù)據(jù)庫和Java程序的橋梁,通過JDBCAPI可以方便地實現(xiàn)對各種主流關系型數(shù)據(jù)庫的操作,它由一組用Java編寫的類和接口組成。JDBCAPI主要位于JDK中的java.sql包中。9.1.1JDBC的功能在實際開發(fā)中可以直接使用JDBC進行各個數(shù)據(jù)庫的連接與操作,而且可以方便的向數(shù)據(jù)庫中發(fā)送各種SQL語句。在JDBC中提拱的是一套標準的接口,這樣各個支持Java的數(shù)據(jù)庫生產商只要按照此接口提拱相應的實現(xiàn),則就可以使用JDBC進行操作,極大的體現(xiàn)了Java的可移植性。9.1.1JDBC的功能JDBC最終為了實現(xiàn)以下目標:1)通過使用標準的SQL語句甚至是SQL擴展,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應用程序,同時還遵守Java語言的相關規(guī)定。2)數(shù)據(jù)庫供應商和數(shù)據(jù)工具開發(fā)商可以提供底層的驅動程序,因此他們可以不斷優(yōu)化各自數(shù)據(jù)庫產品的驅動程序。9.1.1JDBC的功能9.1JDBC簡介每個數(shù)據(jù)庫廠商比如Oracle、SQLServer、MySQL都提供了該數(shù)據(jù)庫的JDBC驅動程序,并且都提供了一個實現(xiàn)java.sql.Driver接口的類,簡稱Driver類。在Java應用開發(fā)中,如果要訪問數(shù)據(jù)庫,首先應配置數(shù)據(jù)庫的JDBC驅動程序(jar包)buildPath到Java應用程序的ReferencedLibraries目錄下,Java應用程序才能正常地通過JDBC接口訪問數(shù)據(jù)庫。首先在網(wǎng)上下載與MySQL的數(shù)據(jù)庫驅動程序mysql-connector-java-x.jar,這里的x代表數(shù)據(jù)庫驅動程序的版本號。
比如:mysql-connector-java-5.1.20-bin.jar9.1.2配置JDBC驅動程序9.2MySQL數(shù)據(jù)庫的安裝與使用較好的可移植性。支持包括Windows、Linux、Solaris在內的多種操作系統(tǒng)。為Java、PHP、.NET、C等多種編程語言提供了API。支持多線程技術。優(yōu)化的SQL查詢算法,有效地提高查詢速度。提供了TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫連接途徑。提供了用于管理、檢查、優(yōu)化數(shù)據(jù)庫操作的管理工具。具有處理千萬條記錄的能力。支持多種字符編碼。9.2.1MySQL的特點9.2MySQL數(shù)據(jù)庫的安裝與使用9.2.2MySQL的安裝輸入密碼9.2MySQL數(shù)據(jù)庫的安裝與使用9.2.2MySQL的安裝安裝完成9.2MySQL數(shù)據(jù)庫的安裝與使用9.2.2MySQL的安裝MySQL的可視化界面9.2MySQL數(shù)據(jù)庫的安裝與使用創(chuàng)建數(shù)據(jù)庫:CREATEDATABASE數(shù)據(jù)庫名;刪除數(shù)據(jù)庫:DROPDATABASE數(shù)據(jù)庫名;使用數(shù)據(jù)庫:USE數(shù)據(jù)庫名;創(chuàng)建表:CREATETABLE表名(列名1屬性類型AUTO_INCREMENTPRIMARYKEY,//自動增長,主鍵列名2屬性類型NOTNULL,//非空列名3屬性類型NOTNULL,//非空);刪除表:DROPTABLE表名;增加表一行數(shù)據(jù):INSERTINTO表名(列名)VALUES(值1,值2,...);刪除表一行數(shù)據(jù):DELETEFROM表名WHERE列名=‘值’;9.2.3MySQL的基本SQL語法和使用9.3使用JDBC訪問數(shù)據(jù)庫JDBC本身是一個固定的標準,所以其操作基本上也是固定的,只需修改很少的一部分代碼就可以達到不同數(shù)據(jù)庫之間的連接轉換功能。Java應用程序需要訪問數(shù)據(jù)庫時,首先要加載數(shù)據(jù)庫驅動,只需加載一次,然后在每次訪問數(shù)據(jù)庫時創(chuàng)建一個Connection實例,獲取數(shù)據(jù)庫連接,獲取連接后,執(zhí)行需要的SQL語句,最后完成數(shù)據(jù)庫操作后釋放與數(shù)據(jù)庫間的連接。使用JDBC訪問數(shù)據(jù)庫的步驟有:1.加載數(shù)據(jù)庫驅動2.創(chuàng)建數(shù)據(jù)庫連接3.使用SQL語句進行數(shù)據(jù)庫操作4.關閉數(shù)據(jù)庫連接9.3使用JDBC訪問數(shù)據(jù)庫Java加載JDBC數(shù)據(jù)庫驅動的方法是調用Class類的靜態(tài)方法forName(),不同數(shù)據(jù)庫的JDBC驅動名稱不同。語法格式如下:
Class.forName(StringdriverManager);MySQL的驅動類名為com.mysql.jdbc.Drivertry{
Class.forName("com.mysql.jdbc.Driver");//加載數(shù)據(jù)庫驅動}catch(ClassNotFoundExceptione){e.printStackTrace();}9.3.1加載數(shù)據(jù)庫驅動9.3使用JDBC訪問數(shù)據(jù)庫加載完數(shù)據(jù)庫驅動后,就可以建立數(shù)據(jù)庫的連接了,需要使用DriverManager類的靜態(tài)方法getConnection()方法來實現(xiàn)。Stringurl="jdbc:mysql://localhost:3306/userdb";//數(shù)據(jù)庫連接字符串Stringuser="root";//數(shù)據(jù)庫用戶名 Strignpassword="1234"http://數(shù)據(jù)庫密碼Connectionconnection=null;try{ Class.forName("com.mysql.jdbc.Driver");//創(chuàng)建Connection連接
connection=DriverManager.getConnection(url,user,passwd); }catch(ClassNotFoundExceptione){ e.printStackTrace(); }catch(SQLExceptione){ e.printStackTrace();}9.3.2創(chuàng)建數(shù)據(jù)庫連接9.3使用JDBC訪問數(shù)據(jù)庫建立了連接之后,就可以使用Connection接口的createStatement()方法來獲取Statement對象,也可以調用prepareStatement()方法獲得PrepareStatement對象,通過executeQuery()方法來執(zhí)行查詢數(shù)據(jù)庫的SQL語句。Statementstatement=conn.createStatement(); Stringsql="select*fromuserinfo"; ResultSetrs=stmt.executeQuery(sql);
9.3.3查詢數(shù)據(jù)庫操作9.3使用JDBC訪問數(shù)據(jù)庫建立了連接之后,就可以使用Connection接口的createStatement()方法來獲取Statement對象,也可以調用prepareStatement()方法獲得PrepareStatement對象,通過executeQuery()方法來執(zhí)行查詢數(shù)據(jù)庫的SQL語句。while(rs.next()){ //光標向后移動,并判斷是否有效
StringuserId=rs.getString(1); //查詢并返回表的uid屬性的值
Stringusername=rs.getString(2);//查詢并返回表的uname屬性的值 StringuserPass=rs.getString(3);//查詢并返回表的upass屬性的值
intuserAge= rs.getInt(4);//查詢并返回表的uage屬性的值}System.out.println("用戶編號是:"+userId);System.out.println("用戶名是:"+username);System.out.println("用戶密碼是:"+userPass);System.out.println("用戶年齡是:"+userAge);9.3.3查詢數(shù)據(jù)庫操作9.3使用JDBC訪問數(shù)據(jù)庫接口PreparedStatement表示預編譯的SQL語句的對象。PreparedStatement實例包含已編譯的SQL語句。這就是使語句"準備好"。包含于PreparedStatement對象中的SQL語句可具有一個或多個IN參數(shù)。IN參數(shù)的值在SQL語句創(chuàng)建時未被指定。相反的,該語句為每個IN參數(shù)保留一個問號("?")作為占位符。PreparedStatementstatement=null;Stringsql="select*fromuserInfowhereuserName=?";statement=connection.prepareStatement(sql);statement.setString(1,user.getUserId());ResultSetresult=statement.executeQuery();9.3.3查詢數(shù)據(jù)庫操作9.3使用JDBC訪問數(shù)據(jù)庫建立了連接之后,就可以使用Connection接口的createStatement()方法來獲取Statement對象,也可以調用prepareStatement()方法獲得PrepareStatement對象,通過executeUpdate()方法來執(zhí)行更新數(shù)據(jù)庫的SQL語句。PreparedStatementstatement=null;Stringsql="insertintouserInfovalues(?,?,?,?,?,?)";statement=connection.prepareStatement(sql);statement.setString(1,user.getUserId());statement.setString(2,user.getUserName());statement.setString(3,user.getUserSex());statement.setInt(4,user.getUserAge());intcount=statement.executeUpdate();9.3.4更新數(shù)據(jù)庫操作9.3使用JDBC訪問數(shù)據(jù)庫1.加載驅動確保數(shù)據(jù)庫的jar包已經在項目的;2.建立連接,確定訪問數(shù)據(jù)庫mydb的用戶名和密碼;3.創(chuàng)建PreparedStatement(發(fā)送預編譯sql語句到數(shù)據(jù)庫)4.返回結果;5.釋放資源;9.3.5應用程序通過JDBC訪問MySQL9.4實訓9數(shù)據(jù)庫的增刪改查要求在mydb數(shù)據(jù)庫的userinfo表中刪除姓名為“吳剛”的記錄,并把查詢結果顯示在控制臺。任務1:數(shù)據(jù)庫表的中指定行的刪除9.4實訓9數(shù)據(jù)庫的增刪改查要求在判斷一個用戶和密碼是否在mydb數(shù)據(jù)庫userinfo表中有記錄,如果有記錄在控制臺輸出1,如果
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 信陽府售房合同范例
- 高考化學二輪復習講練測專題05 物質結構與元素周期律(講)(教師版)
- 七年級歷史下冊第二單元遼宋夏金元時期:民族關系發(fā)展和社會變化第12課宋元時期的都市和文化學案新人教版
- 木結構的基礎施工方案
- 改造電梯施工方案
- 保潔公司跟員工合同范例
- 保姆月嫂合同范例
- 企業(yè)租房合同范例誰有效
- 個人課程培訓合同范例
- 傭金支付合同范例
- 監(jiān)理工程師培訓課件(共8)-2024鮮版
- 基于消費者行為的社交電商營銷策略研究分析-以小紅書和拼多多為例對比分析 電子商務管理專業(yè)
- 上海交通大學無機化學課件第八章第二部分
- 星巴克新員工培訓手冊
- 《中國缺血性卒中和短暫性腦缺血發(fā)作二級預防指南2022》解讀
- 2024年西安電力高等??茖W校高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- 袁家村招商策劃方案
- 天龍八部礦石分布圖
- 光伏電站運維安全培訓內容
- 丹尼斯人事規(guī)章(10年基層)崗前培訓
- GB/T 5750.2-2023生活飲用水標準檢驗方法第2部分:水樣的采集與保存
評論
0/150
提交評論