Java程序設計實訓教程課件12網(wǎng)絡與數(shù)據(jù)庫編程_第1頁
Java程序設計實訓教程課件12網(wǎng)絡與數(shù)據(jù)庫編程_第2頁
Java程序設計實訓教程課件12網(wǎng)絡與數(shù)據(jù)庫編程_第3頁
Java程序設計實訓教程課件12網(wǎng)絡與數(shù)據(jù)庫編程_第4頁
Java程序設計實訓教程課件12網(wǎng)絡與數(shù)據(jù)庫編程_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

12.本章內(nèi)容12.1數(shù)據(jù)庫編程12.2網(wǎng)絡編程JDBCJDBC(JavaDataBaseConnectivity)是Java數(shù)據(jù)庫連接APIJDBC能完成3件事與一個數(shù)據(jù)庫建立連接向數(shù)據(jù)庫發(fā)送SQL語句處理數(shù)據(jù)庫返回的結(jié)果JDBC通過建立JDBC-ODBC橋接器和數(shù)據(jù)庫連接,JDBC有能力訪問幾乎所有類型的數(shù)據(jù)庫。1.JDBC-ODBC對數(shù)據(jù)庫操作的步驟設置數(shù)據(jù)源JDBC-ODBC橋接器建立JDBC-ODBC橋接器連接到數(shù)據(jù)庫向數(shù)據(jù)庫發(fā)送SQL語句處理查詢結(jié)果設置ODBC(以Access為例)

控制面版->管理工具->數(shù)據(jù)源->MsAccessDatabase->DriverdoMicrosoftAccess(*.mdb)->

數(shù)據(jù)源名稱(redsun)->

數(shù)據(jù)庫名(student.mdb)建立SQLServer的ODBC數(shù)據(jù)源建立JDBC-ODBC橋接器importjava.sql.*;Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");建立橋接器可能發(fā)生異常

try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");} catch(ClassNotFoundExceptione){ System.out.println(""+e); }連接到數(shù)據(jù)庫用包java.sql中的Connection類聲明一個對象調(diào)用類DriverManager的靜態(tài)方法getConnection創(chuàng)建這個連接對象Connectioncon=DriverManager.getConnection(“jdbc:odbc:數(shù)據(jù)源名字”,”數(shù)據(jù)源的loginname”,”數(shù)據(jù)源的password”);建立連接時應捕獲SQLException異常

try{Connectioncon=DriverManager.getConnection(“jdbc:odbc:redsun”,”snow”,”ookk”);}catch(SQLExceptione){}用JDBC驅(qū)動直接連接數(shù)據(jù)庫安裝sqlserver的jdbc驅(qū)動(sqlserverdriverforjdbc),否則ClassNotFoundException在環(huán)境變量Classpath中加上msutil.jar,msbase.jar,mssqlserver.jar格式:C:\ProgramFiles\MicrosoftSQLServer2000DriverforJDBC\lib\mssqlserver.jar;Eclipse中項目名稱右鍵->Properties->JavaBuildPath->Libraries->AddExternalJARs給SQLServer打上sp3補丁,否則[Microsoft][SQLServer2000DriverforJDBC]Errorestablishingsocket

Sp3補丁裝完要重起電腦Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");Stringurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=student";Stringuser="sa";Stringpassword="tracy";Connectioncon=DriverManager.getConnection(url,user,password);向數(shù)據(jù)庫發(fā)送SQL語句使用Statement聲明一個SQL語句對象調(diào)用連接數(shù)據(jù)庫對象con的createStatement

創(chuàng)建SQL語句對象Statementsql=con.createStatement();ResultSetrs=sql.executeQuery(“select*fromtable1”);利用SQL對象對數(shù)據(jù)庫操作rs=sql.executeQuery("select*fromtable1");sql.executeUpdate("insertintochengjibiaovalues(5,'郭美美',80,80,80)");s="郭美美";sql.executeUpdate("insertintochengjibiaovalues(5,'"+s+"',80,80,80)");sql.executeUpdate(“updatechengjibiaoset英語=88where姓名='王名'");sql.executeUpdate("deletefromchengjibiaowhere姓名='王名'");ResultSet:存放查詢結(jié)果ResultSetrs=sql.executeQuery(“select*fromtable1”);(ResultSet最初是在符合條件第一條記錄之前)rs.getString(“數(shù)學”);(×)ResultSet對象一次只能看到一個數(shù)據(jù)行,使用next()方法走到下一數(shù)據(jù)行,當游標到最后一行之后返回false獲得一行數(shù)據(jù)后,可使用位置索引(第一列使用1,第二列用2),或使用列名,getXXX()方法獲得字段值Stringname=rs.getString(3);intmath=rs.getInt("數(shù)學");while(rs.next()){ Stringname=rs.getString("姓名"); intenglish=rs.getInt("英語"); System.out.println("姓名:"+name); System.out.println("英語:"+english); }

con.close();用完關閉連接可滾動結(jié)果集ResultSet默認是順序查詢,當需要在結(jié)果集中前后移動時Statementsql=con.createStatement(inttype,intconcurrency);Type取值:ResultSet.TYPE_FORWARD_ONLYResultSet.TYPE_SCROLL_INSENSITIVEResultSet.TYPE_SCROLL_SENSITIVEConcurrency取值ResultSet.CONCUR_READ_ONLYResultSet.CONCUR_UPDATETABLE滾動查詢中ResultSet的方法P398

例15.3publicbooleanprevious():當移到第一行前返回falsepublicvoidbeforeFirst():移到第一行之前publicvoidafterLast():移到最后一行之后publicvoidfirst():移到第一行publicvoidlast():移到最后一行publicbooleanisAfterLast():判斷是否在最后一行之后publicbooleanisBeforeFirst():判斷是否在第一行之前publicbooleanisFirst()是否在第一行publicbooleanisLast()是否在最后一行publicintgetRow():當前游標所指的行號,從1開始publicbooleanabsolute(introw):移到指定的行號模糊查詢與排序查詢用like進行模式匹配,%代表0個或多個字符,_代替一個字符例如查詢名字中有”紅”學生記錄rs=sql.executeQuery("Select*fromchengjibiaowhere姓名

like'%紅%'");排序查詢orderby數(shù)學

DESC網(wǎng)絡編程相關概念

網(wǎng)絡編程使用套接字達到進程間通信的編程套接字(socket)?

用來代表兩部機器之間的連線終端區(qū)分服務進程?同一臺機器上可同時運行多個服務進程,只靠IP地址不能區(qū)分出唯一的服務進程,還需要端口號(port),客戶端程序通過IP地址連接到某臺機器,通過端口號找到提供服務的進程。80:HTTP服務23:TELNET服務1521:ORACLE服務……服務器網(wǎng)絡客戶端IP地址客戶程序1521socketServerSocket類

監(jiān)聽服務類,實現(xiàn)網(wǎng)絡通訊前,創(chuàng)建服務器端的監(jiān)聽對象,以接收客戶端的連接請求;創(chuàng)建對象:ServerSocket(intport);//參數(shù)port指定服務的監(jiān)聽端口;常用方法:

publicSocketaccept();//啟動監(jiān)聽

publicvoidclose();//結(jié)束監(jiān)聽Socket類負責服務端和客戶端進行通訊的類;創(chuàng)建對象:

Socket(InetAddressremoteHost,intremotePort);//參數(shù)remoteHost指定連接的遠程機器的IP地址

//remotePort指定遠程機器提供服務的監(jiān)聽端口

Socket(StringremoteHostname,intremotePort);//參數(shù)remoteHostname指定連接的遠程機器的名稱

//remotePort指定遠程機器提供服務的監(jiān)聽端口

常用方法:

publicInetAddressgetInetAddress();//讀取連接到此

//socket上的機器地址

publicInputStreamgetInputStream();//返回這個

//socket的輸入流

publicOutputStreamgetOutputStream();//返回這個

//socket的輸出流

publicvoidclose();//關閉socket

數(shù)據(jù)報

無連接的網(wǎng)絡通訊服務,數(shù)據(jù)以獨立的包為單位發(fā)送,不保證傳送順序和內(nèi)容的準確性。數(shù)據(jù)報socket又稱為UDP套接字,無須實現(xiàn)建立連接。DatagramSocket類

DatagramSocket類主要用于數(shù)據(jù)報的發(fā)送和接收。

創(chuàng)建對象

DatagramSocket();DatagramSocket(intport);DatagramSocket(intport,InetAddressaddr);//參數(shù)port指定遠程機器接收數(shù)據(jù)報的監(jiān)聽端口

//參數(shù)addr指定遠程機器IP地址和機器名稱常用方法:

publicsynchronizedvoidreceive(DatagramPacketp);

//接收數(shù)據(jù)報,存到對象p中

publicvoidsend(DatagramPacketp);//發(fā)送數(shù)據(jù)報DatagramPacket類

DatagramPacket類主要用于存放和讀取數(shù)據(jù)報。

創(chuàng)建對象

DatagramPacket(byte[]buf,intlength);//用于創(chuàng)建接收數(shù)據(jù)報的對象,

//參數(shù)buf為接收數(shù)據(jù)的字節(jié)數(shù)組

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論