版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第7章JSP中使用數(shù)據(jù)庫2021/6/271學習目的與要求理解JDBC應用程序編程接口;掌握使用純Java驅(qū)動程序操作數(shù)據(jù)庫的編程方法;掌握對數(shù)據(jù)的增加、刪除、修改和查詢編程技術;查詢記錄的分頁面顯示;數(shù)據(jù)庫連接池編程技術。2021/6/272本章主要內(nèi)容7.1JDBC概述7.2JDBC應用程序接口簡介7.3利用JDBC訪問數(shù)據(jù)庫7.4數(shù)據(jù)庫操作案例7.5上機實訓7.6本章習題2021/6/2737.1JDBC概述7.1.1什么是JDBCJDBC是Java數(shù)據(jù)庫連接(JavaDataBaseConnectivity)技術的簡稱,指Java同許多數(shù)據(jù)庫之間連接的一種標準。JDBC為數(shù)據(jù)庫應用開發(fā)人員、數(shù)據(jù)庫前臺工具開發(fā)人員提供了一種標準的JavaAPI,使開發(fā)人員可以用純Java語言編寫完整的數(shù)據(jù)庫應用程序。簡單地說,JDBC能夠完成下列三件事:與一個數(shù)據(jù)庫建立連接(connection)。向數(shù)據(jù)庫發(fā)送SQL語句(statement)。處理數(shù)據(jù)庫返回的結果(resultset)。2021/6/2747.1JDBC概述7.1.2JDBC的構成1.JDBCAPI:定義了標準接口,無論編寫Mysql還是Oracle等數(shù)據(jù)庫程序,這些接口是一致的。2.JDBC數(shù)據(jù)庫驅(qū)動程序2021/6/2757.2JDBC應用程序接口簡介7.2.1DrvierManager類提供管理一組JDBC驅(qū)動程序所需要的基本服務,可以跟蹤可用的驅(qū)動程序,并在數(shù)據(jù)庫和相應的驅(qū)動程序之間建立連接。該類的常用方法有:getConnection和forName方法。publicstaticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)publicstaticClassforName(StringclassName)2021/6/2767.2JDBC應用程序接口簡介DrvierManager類的使用法:(1)加載驅(qū)動例如:Class.forName("com.mysql.jdbc.Driver");(2)與數(shù)據(jù)庫建立連接DriverManager.getConnection(Stringurl,Stringuser,Stringpassword);2021/6/2777.2JDBC應用程序接口簡介對getConnection函數(shù)中的參數(shù)解釋:url參數(shù)的命名方法:url由3部分組成,各部分間用冒號分隔,如下所示:jdbc:<子協(xié)議>:<子名稱>其中:jdbc——協(xié)議名稱。在JDBCURL中的協(xié)議總是jdbc。<子協(xié)議>——驅(qū)動程序名或數(shù)據(jù)庫連接機制的名稱。如“odbc”,它是用于指定ODBC風格的數(shù)據(jù)庫資源名稱的URL而保留的。<子名稱>——一種標識數(shù)據(jù)庫的方法。子名稱可以依不同的子協(xié)議而變化。它還可以有子名稱的子名稱(含有驅(qū)動程序編程人員所選的任何內(nèi)部語法)。使用子名稱的目的是為定位數(shù)據(jù)庫提供足夠的信息。2021/6/2787.2JDBC應用程序接口簡介7.2.2Connection接口Connection接口是java.sql包中最重要的接口。Connection對象代表與數(shù)據(jù)庫的連接。一個應用程序可與單個數(shù)據(jù)庫有一個或多個連接,或者可與許多數(shù)據(jù)庫有連接。數(shù)據(jù)庫連接一旦建立,就可用來向它所涉及的數(shù)據(jù)庫發(fā)送SQL語句。Connection的作用是創(chuàng)建向數(shù)據(jù)庫發(fā)送SQL語句的三個接口。這三個接口分別是:Statement接口PreparedStatement接口CallableStatement接口。2021/6/2797.2JDBC應用程序接口簡介7.2.2Connection接口Connection接口提供了多個同名但是參數(shù)不同的方法創(chuàng)建以上的三個接口。例如:publicStatementcreateStatement();publicStatementcreateStatement(intresultSetType,intresultSetConcurrency);其中:參數(shù)resultSetType指返回記錄集的類型resultSetConcurrency指發(fā)送的SQL語句的權限2021/6/27107.2JDBC應用程序接口簡介7.2.2Connection接口常用的一些方法:booleanisClosed():用于判斷Connection對象是否已經(jīng)被關閉;voidcommit():用于提交SQL語句,確認從上一次提交以來所進行的修改;voidclose():斷開連接,釋放資源;voidrollback():取消SQL語句,取消當前事務中進行的修改。DatabaseMetaDatagetMetaData():獲取一個DatabaseMetaData對象。2021/6/27117.2JDBC應用程序接口簡介7.2.3Statement接口Statement接口對象創(chuàng)建完畢后,主要使用以下方法:publicResultSetexecuteQuery(Stringsql):用于執(zhí)行產(chǎn)生單個結果集的語句,如select。publicintexecuteUpdate(Stringsql):用于執(zhí)行insert、update或delete語句以及SQLDLL(數(shù)據(jù)定義)語句。當執(zhí)行insert、update或delete語句時將返回一個整數(shù),用于表示受影響的行數(shù),返回結果為0時表示操作失??;當執(zhí)行SQLDLL語句,如createtable時,由于它不操作行,返回值將總為0。2021/6/27127.2JDBC應用程序接口簡介7.2.3Statement接口publicbooleanexecute(Stringsql):用于執(zhí)行返回多個結果集、多個更新計數(shù)或二者結合的SQL語句。publicint[]executeBatch():用于執(zhí)行幾個SQL語句。Statement接口使用addBatch(Stringsql)方法將幾個SQL語句添加到一個語句塊中,然后一同提交給數(shù)據(jù)庫服務器,同時執(zhí)行。當執(zhí)行多個SQLinsert語句時效率將很高,因為一次提交比多次提交要節(jié)省很多系統(tǒng)資源。voidclose():釋放Satement對象的數(shù)據(jù)庫和JDBC資源。2021/6/27137.2JDBC應用程序接口簡介7.2.3Statement接口PreparedStatement接口對象主要使用以下方法:publicResultSetexecuteQuery(Stringsql):使用Select命名對數(shù)據(jù)庫進行查詢。publicintexecuteUpdate(Stringsql):用于執(zhí)行insert、update或delete語句對數(shù)據(jù)庫進行新增、刪除和修改操作。voidsetXXX(intparameterIndex,XXXx):設定XXX數(shù)據(jù)類型值給PreparedStatement類對象的IN參數(shù)。2021/6/27147.2JDBC應用程序接口簡介7.2.3Statement接口CallableStatement接口主要用于執(zhí)行存儲過程,其主要方法同Statement。存儲過程有兩種參數(shù),IN參數(shù)和OUT參數(shù)。CallableStatement接口繼承了PerpareedStatement接口的setXXX方法對IN參數(shù)賦值。在CallableStatement接口中使用OUT參數(shù),要做兩件事情,一是對OUT參數(shù)進行類型注冊,二是獲取OUT參數(shù)的值。CallableStatement提供了多種方法進行類型注冊,下面是常用的兩種:registerOutParameter(StringparameterStringName,intsqlType);registerOutParameter(StringparameterStringName,intsqlType,intscale);2021/6/27157.2JDBC應用程序接口簡介7.2.4數(shù)據(jù)結果集——ResultSet接口ResultSet接口用于獲取執(zhí)行SQL語句(或數(shù)據(jù)庫存儲過程)返回的結果。它的實例對象是符合SQL語句條件的所有行。常用的方法有:publicbooleannext():用于數(shù)據(jù)庫游標移動到結果集的下一行,使之成為當前行。如果當前行為最后一行,返回值為false;否則,返回true。在定位到結果集中的某行后,就可以讀取數(shù)據(jù)。對于不同數(shù)據(jù)類型,要使用不同的讀取方法getXXX()。JDBC提供了兩種形式:2021/6/27167.2JDBC應用程序接口簡介7.2.4數(shù)據(jù)結果集——ResultSet接口publicXXXgetXXX(StringcolumnName):XXX代表任意的數(shù)據(jù)類型,參數(shù)columnName代表列名。publicXXXgetXXX(intcolumnIndex):XXX代表任意的數(shù)據(jù)類型,參數(shù)columnIndex代表列號。ResultSetMetaDatagetMetaData():獲取結果集的列編號、類型和屬性下面是ResultSet接口的示例:2021/6/2717privateStatementstmt=null;privateResultSetrs=null;privatePreparedStatementprpSql=null;Class.forName("com.mysql.jdbc.Driver");Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost:端口號/數(shù)據(jù)庫名稱","用戶名","密碼");stmt=conn.createStatement();rs=stmt.executeUpdate("select*fromdatabase");while(rs.next()){……rs.getString(1);}rs.close();stmt.close();conn.close();2021/6/27187.2JDBC應用程序接口簡介7.2.5數(shù)據(jù)庫元數(shù)據(jù)--DatabaseMetaData和ResultSetMetaDataDatabaseMetaData接口可以從數(shù)據(jù)庫管理系統(tǒng)中獲得數(shù)據(jù)庫的信息,例如數(shù)據(jù)庫所有的表名、存儲過程名等信息。這個類提供了許多方法來取得這些信息,常用的方法如下:StringgetDatabaseProductName():獲得數(shù)據(jù)庫的名稱。ResultSetgetCooumns(Stringdatabasename,Stringdboname,Stringtablename,Stringcolumnname):獲得表字段信息,以列的方式存儲在一個ResultSet對象中。2021/6/27197.2JDBC應用程序接口簡介7.2.5數(shù)據(jù)庫元數(shù)據(jù)--DatabaseMetaData和ResultSetMetaDataResultSetMetaData接口用來獲取數(shù)據(jù)庫表的結構。通過它提供的一些常用方法,可以獲得ResultSet對象中的類型和屬性信息的對象。常用方法如下:intgetColumnType(intcolumn):檢索指定列的SQL類型;StringgetTableName(intcolumn):獲取指定列的名稱;2021/6/27207.3利用JDBC訪問數(shù)據(jù)庫所有的利用JDBC訪問數(shù)據(jù)庫的程序都具有以下的流程:加載JDBC驅(qū)動程序建立和數(shù)據(jù)庫的連接執(zhí)行SQL語句存放處理結果與數(shù)據(jù)庫斷開連接2021/6/27217.3利用JDBC訪問數(shù)據(jù)庫7.3.1通過JDBC-ODBC橋連接來訪問數(shù)據(jù)庫可以使JDBC有能力訪問幾乎所有類型的數(shù)據(jù)庫。下面通過一個例子介紹:1、首先建立一個access數(shù)據(jù)庫,數(shù)據(jù)庫名稱為:book,保存數(shù)據(jù)庫文件。2021/6/27227.3利用JDBC訪問數(shù)據(jù)庫7.3.1通過JDBC-ODBC橋連接來訪問數(shù)據(jù)庫2、配置數(shù)據(jù)源首先要配置ODBC數(shù)據(jù)源。選擇數(shù)據(jù)源(ODBC)(Win2000在管理工具中;WinXP在控制面板中)先看圖片,在現(xiàn)場演示。2021/6/2723在管理工具中,選擇“數(shù)據(jù)源”在對話框中選擇用戶dsn,添加2021/6/2724在對話框中選擇accessdriver(*。Mdb)單擊“完成”。在數(shù)據(jù)源名稱輸入“book”。選擇數(shù)據(jù)庫為book。2021/6/2725選擇圖書管理數(shù)據(jù)庫.mdb權限默認,在登錄用戶名輸入對應的用戶名和密碼。2021/6/27267.3利用JDBC訪問數(shù)據(jù)庫7.3.1通過JDBC-ODBC橋連接來訪問數(shù)據(jù)庫3編寫相應的程序(1)加載數(shù)據(jù)庫的驅(qū)動程序(2)建立連接(3)向數(shù)據(jù)庫發(fā)送SQL語句(4)處理查詢結果(5)關閉數(shù)據(jù)庫連接2021/6/27277.3利用JDBC訪問數(shù)據(jù)庫7.3.1通過JDBC-ODBC橋連接來訪問數(shù)據(jù)庫【例7.1】利用JDBC-ODBC橋連接數(shù)據(jù)庫,執(zhí)行SQL語句,并在數(shù)據(jù)庫中插入一條記錄。2021/6/2728ch7_1.jsp文件內(nèi)容如下:<%@pagecontentType="text/html;charset=GB2312"%><%@pageimport="java.sql.*"%><html><bodybgcolor=cyan><%Connectionconn;Statementstmt=null;ResultSetrs;intn;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundExceptione){out.print(e);}2021/6/2729try{//和數(shù)據(jù)庫建立連接conn=DriverManager.getConnection("jdbc:odbc:book","","");stmt=conn.createStatement();//創(chuàng)建Statement對象,用于執(zhí)行SQL語句n=stmt.executeUpdate( "insertintobookvalues('TP003','ASP.NET動態(tài)網(wǎng)站開發(fā)教程','李英俊','清華大學出版社',35)");//向表中插入一條記錄if(n>0)out.println("添加成功");elseout.println("添加失敗");rs=stmt.executeQuery("select*frombook");2021/6/2730out.print("<tableborder=2>");out.print("<tr>");out.print("<thwidth=50>"+"書號");out.print("<thwidth=100>"+"書名");out.print("<thwidth=50>"+"作者");out.print("<thwidth=100>"+"出版社");out.print("<thwidth=50>"+"單價");out.print("</tr>");2021/6/2731while(rs.next()){ out.print("<tr>"); out.print("<td>"+rs.getString(1)+"</td>"); out.print("<td>"+rs.getString(2)+"</td>"); out.print("<td>"+rs.getString(3)+"</td>"); out.print("<td>"+rs.getString("publish")+"</td>"); out.print("<td>"+rs.getFloat("price")+"</td>"); out.print("</tr>");}out.print("</table>");stmt.close();//關閉數(shù)據(jù)庫conn.close();}2021/6/2732catch(Exceptione){out.println(e.toString());}%></body></html>2021/6/27337.3利用JDBC訪問數(shù)據(jù)庫7.3.2利用本地協(xié)議純Java驅(qū)動程序連接數(shù)據(jù)庫1.安裝mysql數(shù)據(jù)庫從網(wǎng)上下載mysql-5.0.22-win32.zip,將mysql安裝到了E:\mysql目錄中。2.啟動mysqlcde:\mysql\binmysqld-nt2021/6/27347.3利用JDBC訪問數(shù)據(jù)庫7.3.2利用本地協(xié)議純Java驅(qū)動程序連接數(shù)據(jù)庫2021/6/27357.3利用JDBC訪問數(shù)據(jù)庫7.3.2利用本地協(xié)議純Java驅(qū)動程序連接數(shù)據(jù)庫3.啟動mysql監(jiān)視器用戶再啟動一個MS-DOS窗口,切換到E:\MYSQL\BIN目錄中,執(zhí)行如下命令:e:cdmysqlcdbinmysql-uroot2021/6/27367.3利用JDBC訪問數(shù)據(jù)庫7.3.2利用本地協(xié)議純Java驅(qū)動程序連接數(shù)據(jù)庫2021/6/27377.3利用JDBC訪問數(shù)據(jù)庫7.3.2利用本地協(xié)議純Java驅(qū)動程序連接數(shù)據(jù)庫4.創(chuàng)建數(shù)據(jù)庫啟動mysql監(jiān)視器后,可以在提示符下輸入sql語句來創(chuàng)建數(shù)據(jù)庫和表,sql語句結束必須使用“;”符號。在編輯sql語句的過程中可以使用/c終止當前sql語句的編輯。在mysql監(jiān)視器提示符下,輸入創(chuàng)建圖書管理數(shù)據(jù)庫booklib的SQL語句并執(zhí)行,2021/6/27387.3利用JDBC訪問數(shù)據(jù)庫7.3.2利用本地協(xié)議純Java驅(qū)動程序連接數(shù)據(jù)庫2021/6/27397.3利用JDBC訪問數(shù)據(jù)庫7.3.2利用本地協(xié)議純Java驅(qū)動程序連接數(shù)據(jù)庫5.創(chuàng)建數(shù)據(jù)庫中的表在booklib數(shù)據(jù)庫中創(chuàng)建book表的SQL語句為:
CREATETABLEbook(bidchar(20)NOTNULL,namechar(20)defaultNULL,authorchar(10)defaultNULL,publishvarchar(50)defaultNULL,pricefloatdefaultNULL,PRIMARYKEY(bid))ENGINE=InnoDBDEFAULTCHARSET=utf8;2021/6/27407.3利用JDBC訪問數(shù)據(jù)庫7.3.2利用本地協(xié)議純Java驅(qū)動程序連接數(shù)據(jù)庫5.創(chuàng)建數(shù)據(jù)庫中的表2021/6/27417.3利用JDBC訪問數(shù)據(jù)庫7.3.2利用本地協(xié)議純Java驅(qū)動程序連接數(shù)據(jù)庫6.編寫相應的程序--連接mysql數(shù)據(jù)庫try{Class.forName("com.mysql.jdbc.Driver");}try{//和數(shù)據(jù)庫建立連接conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/booklib","root","");……conn.close();}catch(Exceptione){out.println(e.toString());}2021/6/27427.3利用JDBC訪問數(shù)據(jù)庫7.3.2利用本地協(xié)議純Java驅(qū)動程序連接數(shù)據(jù)庫【例7.2】利用純Java驅(qū)動程序連接mysql數(shù)據(jù)庫,查詢book表中的所有記錄2021/6/27432021/6/27442021/6/27452021/6/2746連接不同的數(shù)據(jù)庫,除Class.forName()中的驅(qū)動程序類及url的書寫方式不同之外,其他所有部分均相同。2021/6/27477.3利用JDBC訪問數(shù)據(jù)庫7.3.3配置和連接不同的數(shù)據(jù)庫1.連接Oracle數(shù)據(jù)庫安裝完Oracle后,找到文件classes12.zip(可以在Oracle安裝目錄搜索得到),將該文件復制到JavaJDK的子目錄/jre/lib/ext目錄中,并其更名為classes.jre或cleasses.jar。Class.forName("oracle.jdbc.driver.OracleDriver");DriverManager.getConnection("jdbc:oracle:thin"@host:端口號:數(shù)據(jù)庫名","用戶名","密碼");2021/6/27487.3利用JDBC訪問數(shù)據(jù)庫7.3.3配置和連接不同的數(shù)據(jù)庫2.連接SqlServer數(shù)據(jù)庫下載sqljdbc_1.1.1501.101_enu.exe驅(qū)動安裝文件。找到sqljdbc.jar文件,將其復制到Tomcat所使用的JDK的\jre\lib\ext目錄中。連接方法:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");DriverManager.getConnection("jdbc:sqlserver://:1443;DatabaseName=數(shù)據(jù)庫名",“用戶名”,“密碼”);2021/6/2749
提示:
如果應用程序和要連接的SqlServer2000服務器在不同的計算機上,可以使用SqlServer2000服務器的ip地址,例如。如果應用程序無法和SqlServer2000連接,可能需要更新SqlServer2000服務器。用戶可以從微軟網(wǎng)站下載補丁sqlsp4.rar,安裝該補丁即可。7.3利用JDBC訪問數(shù)據(jù)庫2021/6/27507.4數(shù)據(jù)庫操作案例7.4.1查詢數(shù)據(jù)1.順序查詢數(shù)據(jù)ResultSetrs=stmt.executeQuery("selectbid,name,author,publish,pricefrombook");對于結果集rs的列數(shù)為5列,第一列對用bid,第二列對應name,第三列對應author,第四列對應publish,第五列對應price;而每一次rs只能看到一行,要在看到下一行,必須使用next()方法移動當前行。ResultSet對象使用getXXX()方法獲得當前行字段的值。下面是一個實例:2021/6/27512021/6/2752QueryBean.java代碼2021/6/2753ch7_3.jsp文件內(nèi)容:2021/6/27547.4數(shù)據(jù)庫操作案例2.隨機查詢?nèi)绻枰诮Y果集中前后移動或隨機顯示某一條記錄,這時就必須得到一個可以滾動的結果集。得到滾動結果集的方法如下:Statementstmt=conn.createStatement(inttype,intconcurrency);ResultSetrs=stmt.executeQuery(sqlstr);其中type的取值決定結果集的滾動方式,可以取下列值:2021/6/27557.4數(shù)據(jù)庫操作案例2.隨機查詢ResultSet.TYPE_FORWORD_ONLY:結果集的游標只能向下移動。ResultSet.TYPE_SCROLL_INSENSITIVE:結果集的游標可以上下移動,當數(shù)據(jù)庫的數(shù)據(jù)變化時,當前結果集不變。ResultSet.TYPE_SCROLL_SENSITIVE:結果集的游標可以上下移動,當數(shù)據(jù)庫的數(shù)據(jù)變化時,當前結果集同步變化。2021/6/27567.4數(shù)據(jù)庫操作案例2.隨機查詢滾動結果集ResultSet對象可以使用的方法如下:publicbooleanprevious():將游標向上移動,當移動到結果集第一行之前返回false。publicvoidbeforeFirst():將游標移到結果集第一行之前。publicvoidafterLast():將游標移到結果集最后一行之后。publicvoidfirst():將游標移到結果集的第一行。publicvoidlast():將游標移到結果集的最后一行。publicbooleanisAfterLast():判斷游標是否在結果集的最后一行之后。2021/6/27577.4數(shù)據(jù)庫操作案例2.隨機查詢滾動結果集ResultSet對象可以使用的方法如下:publicbooleanisBeforeFirst():判斷游標是否在結果集第一行之前。publicbooleanisFirst():判斷游標是否在結果集第一行。publicbooleanisLast():判斷游標是否在結果集的最后一行。publicintgetRow():得到當前游標所在的行,行號從1開始,如果結果集沒有行,則返回0。publicbooleanabsolute(introw):將游標移到到row所指定的行,row取負值則倒數(shù),如-1,則移動到最后一行。2021/6/27587.4數(shù)據(jù)庫操作案例2.隨機查詢【例7.4】隨機查詢示例。2021/6/2759RandomQuerybean.java2021/6/2760ch7_3.jsp文件內(nèi)容:2021/6/27617.4數(shù)據(jù)庫操作案例3.條件查詢在順序查詢和隨機查詢中得到的是表中的全部記錄。如果要得到表中滿足條件的記錄,就要采用條件查詢。條件查詢是由客戶端提供查詢條件,即查詢的參數(shù),再由這些參數(shù)構造SQL語句,執(zhí)行該語句并得到篩選結果的查詢。下面的例子根據(jù)用戶選擇的字段和輸入的關鍵字查詢圖書信息,如果沒有輸入關鍵字則顯示所有圖書的信息。2021/6/27627.4數(shù)據(jù)庫操作案例3.條件查詢【例7.5】條件查詢圖書信息2021/6/2763keyQueryBean.java2021/6/2764ch7_5.jsp文件內(nèi)容:2021/6/27657.4數(shù)據(jù)庫操作案例7.4.2更新查詢Statement對象提供了intexecuteUpdate(StringsqlStatement)方法,用于實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的添加、刪除和更新操作。sqlStatement參數(shù)是由insert、delete和update等關鍵字構成的Sql語句。函數(shù)返回值為查詢所影響的行數(shù),失敗返回0。例如添加記錄的sql語句:StringsqlStatement="insertbookvalues('tp1004','高數(shù)','楊','清華出版社',35)";2021/6/27667.4數(shù)據(jù)庫操作案例7.4.2更新查詢stmt.executeUpdate(sqlStatement);例如更新記錄的sql語句:StringsqlStatement="updatebooksetname='新值'wherebid='tp1001'";stmt.executeUpdate(sqlStatement);例如刪除記錄的sql語句:StringsqlStatement="deletefrombookwherebid='tp1001'";stmt.executeUpdate(sqlStatement);2021/6/27677.4數(shù)據(jù)庫操作案例7.4.2更新查詢1、添加記錄【例7.6】向mysql數(shù)據(jù)庫中的表追加記錄2021/6/2768addBean.java2021/6/2769ch7_6.jsp文件內(nèi)容:2021/6/27707.4數(shù)據(jù)庫操作案例7.4.2更新查詢2、刪除記錄【例7.7】刪除book表中的記錄。2021/6/2771listBean.java2021/6/2772deleteBean.java2021/6/2773ch7_7.jsp文件內(nèi)容:2021/6/27747.4數(shù)據(jù)庫操作案例7.4.2更新查詢3.修改記錄【例7.8】修改記錄,頁面如圖效果如圖所示:2021/6/2775創(chuàng)建存儲過程的sql代碼如下:usebooklibdelimiter$$createprocedureupdate_book_p(inp_bidchar(20),inp_namechar(20),inp_authorchar(10),inp_publishvarchar(50),inp_pricefloat)readssqldatabeginupdatebooksetname=p_name,author=p_author,publish=p_publish,price=p_pricewherebid=p_bid;end$$delimiter;2021/6/27767.4數(shù)據(jù)庫操作案例2021/6/2777showBean.java2021/6/2778三個頁面代碼:2021/6/2779第三個頁面上的Javabean代碼:2021/6/27807.4數(shù)據(jù)庫操作案例7.4.3分頁查詢分頁顯示程序中可以使用CachedRowSetImpl類,CachedRowSetImpl對象可以保存ResultSet對象中的數(shù)據(jù),它不依賴與Connection對象,并且繼承了ResultSet的所有方法。CachedRowSetImpl類在com.sun.rowset包中。使用CachedRowSetImpl對象的代碼如下:2021/6/27817.4數(shù)據(jù)庫操作案例7.4.3分頁查詢importcom.sun.rowse.*;……ResultSetrs=stmt.executeQuery("select*frombook");CachedRowSetImplrowSet=newCachedRowSetImpl();rowSet.populate(rs);while(rowSet.next()){……rowSet.getString(1);}2021/6/27827.4數(shù)據(jù)庫操作案例7.4.3分頁查詢【例7.9】數(shù)據(jù)庫記錄的分頁顯示2021
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度照明工程設計、施工與監(jiān)理一體化合同2篇
- 2024年淄博職業(yè)學院高職單招語文歷年參考題庫含答案解析
- 解三角形復習
- 二零二五年度藝術展覽LOGO設計及文化傳播協(xié)議2篇
- 2024年陽泉市第一人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年江西婺源茶業(yè)職業(yè)學院高職單招語文歷年參考題庫含答案解析
- 2024年江蘇護理職業(yè)學院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 二零二五年度財務顧問與創(chuàng)業(yè)投資機構合作合同模板3篇
- 2024年杭州萬向職業(yè)技術學院高職單招職業(yè)適應性測試歷年參考題庫含答案解析
- 2024年揭陽職業(yè)技術學院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 小學詞語的分類與運用參考模板
- 建筑施工扣件式鋼管腳手架安全技術規(guī)范-2
- 監(jiān)理單位組織結構圖
- 身份證地區(qū)對應碼表
- 牙齦癌護理查房課件
- (完整版)鋁礬土進口合同中英文
- 《庖丁解?!帆@獎課件(省級公開課一等獎)-完美版PPT
- 化工園區(qū)危險品運輸車輛停車場建設標準
- 6月大學英語四級真題(CET4)及答案解析
- 氣排球競賽規(guī)則
- 電梯維修保養(yǎng)報價書模板
評論
0/150
提交評論