免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
JDBC編程結(jié)果集的分頁(yè)顯示
摘要:目前數(shù)據(jù)庫(kù)的應(yīng)用非常普遍,在應(yīng)用程序的開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)涉及到訪問(wèn)數(shù)據(jù)庫(kù)。Java使用JDBC技術(shù)進(jìn)行數(shù)據(jù)庫(kù)的訪問(wèn)。查詢是數(shù)據(jù)庫(kù)的操作中較為頻繁的一種操作,返回的結(jié)果有時(shí)可能是很多條記錄的結(jié)果集,用戶在瀏覽和處理時(shí)不方便,常常會(huì)用到分頁(yè)處理功能。
  關(guān)鍵詞:JDBC數(shù)據(jù)庫(kù);驅(qū)動(dòng)程序;結(jié)果集
  中圖分類(lèi)號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2007)06-11511-01
  
  1 JDBC技術(shù)
  JDBC(Java Database Connectivity)是Sun提供的一套數(shù)據(jù)庫(kù)編程接口API函數(shù),由Java語(yǔ)言編寫(xiě)的類(lèi)和接口組成。JDBC為數(shù)據(jù)庫(kù)開(kāi)發(fā)人員提供了一個(gè)標(biāo)準(zhǔn)的API,使用Java編程語(yǔ)言和JDBC結(jié)合編寫(xiě)的應(yīng)用程序,無(wú)須考慮要為不同的平臺(tái)編寫(xiě)不同的應(yīng)用程序。真正實(shí)現(xiàn)“Write Once,Run Everywhere!”。
  
  2 JDBC編程實(shí)現(xiàn)
  使用JDBC技術(shù)進(jìn)行數(shù)據(jù)庫(kù)訪問(wèn)時(shí),Java應(yīng)用程序通過(guò)JDBC API和JDBC驅(qū)動(dòng)程序管理器之間進(jìn)行通信,JDBC驅(qū)動(dòng)程序管理器以兩種方式和最終的數(shù)據(jù)庫(kù)進(jìn)行通信:一是使用JDBC-ODBC橋驅(qū)動(dòng)程序的間接方式,另一種是使用JDBC驅(qū)動(dòng)程序的直接方式。
  下面以JDBC驅(qū)動(dòng)程序的直接方式為例,說(shuō)明Java語(yǔ)言與SQL Server2000連接的JDBC編程的全過(guò)程:
  (1)加載驅(qū)動(dòng)程序
  Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
  (2)通過(guò)DriverManager到得一個(gè)與數(shù)據(jù)庫(kù)連接的句柄
  private static String url="jdbc:microsoft:sqlserver://localhost:1433;databasename=xxxx ";
  Connection con = DriverManager.getConnection(url, user,password);
  (3)通過(guò)連接句柄綁定要執(zhí)行的語(yǔ)句
  Statement stmt = con.createStatement();
  (4)接收?qǐng)?zhí)行結(jié)果
  ResultSet rs=stmt.executeQuery(sql);
  或ResultSet rs=stmt.executeUpdate(sql);
  (5)對(duì)結(jié)果進(jìn)行處理
  調(diào)用get XXX()方法對(duì)獲取結(jié)果中的值。
  (6)關(guān)閉與數(shù)據(jù)庫(kù)的連接
  rs.close();
  stmt.close();
  con.close();
  
  3 JDBC編程結(jié)果集分頁(yè)顯示
  在ResultSet類(lèi)中提供了一套數(shù)據(jù)的分頁(yè)處理功能。
  3.1 技術(shù)要點(diǎn)
  (1)createStatement()方法:
  public Statement createStatement()
  獲取默認(rèn)連接聲明,沒(méi)有指針操作
  public Statement createStatement(int resultSetType,int resultSetConcurrency)
  resultSetType決定結(jié)果集類(lèi)型的滾動(dòng)方式,它的取值為:ResultSet.TYPE_FORWARD_ONLY、Result.TYPE_SCROLL_INSENSITIVE和ResultSet.TYPE_SCROLL_SENSITIVE
  resultSetConcurrency決定是否可以用結(jié)果集更新數(shù)據(jù)庫(kù)。它的取值為:Result.CONCUR_READ_ONLY 、Result.CONCUR_UPDATETABLE
  (2)ResultSetMetaData結(jié)果集元對(duì)象類(lèi)
  結(jié)果集元數(shù)據(jù)通過(guò)使用getMetaData()來(lái)獲得結(jié)果集元對(duì)象。ResultSetMetaData結(jié)果集元對(duì)象類(lèi)的方法:
  getColumnCount()
  getColumnName(int index)
  getColumnTypeName(int index)
  3.2 建立數(shù)據(jù)庫(kù)
  在SQL Server 2000下建立一個(gè)名為book的數(shù)據(jù)庫(kù),在book數(shù)據(jù)庫(kù)下建立一個(gè)圖書(shū)信息表bookInfo,表的結(jié)構(gòu)為:bookInfo(no,bookname,author,price,public)
  3.3 Java源程序
  為了使得程序具有一定的通用性和靈活性,將要顯示的號(hào)碼和每頁(yè)的大?。宽?yè)的記錄數(shù))由命令行輸入。即命令行參數(shù)arg[0]代表pageno,參數(shù)arg[1] 代表pagesize。源程序JDBCScrollDisplay.java如下:
  import java.sql.*;
  public class JDBCScrollDisplay{
         private static String url="jdbc:microsoft:sqlserver://localhost:1433;databasename=book";
           private static String username="sa";
         private static String password="sa";
         public Connection conn(){
                try {
                     Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
                     Connection con = DriverManager.getConnection(url, username, password);
                     return con;
                    }
                  catch(SQLException e1){
                             System.out.println("can't connection db:"+e1);
                           return null;
                    }
                  catch (Exception e2) {
                           System.out.println("Failed to load JDBC driver.");
                           return null;
                      }
                  }
                public void query(Connection con, String sql,int pageNo,int pageSize){
                try{
                      if(con==null){
                                     throw new Exception("database connection can't use!");
                                   }
                    if(sql==null){
                                     throw new Exception("check your parameter: 'sql'! don't input null!");
                                   }
  int rowCount; //記錄總數(shù)
  int pageCount; //總頁(yè)數(shù)
  Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
  ResultSet rs = stmt.executeQuery(sql); //執(zhí)行查詢
  ResultSetMetaData rmeta = rs.getMetaData();//獲得數(shù)據(jù)字段個(gè)數(shù)
  int numColumns = rmeta.getColumnCount();
  rs.last();
  rowCount = rs.getRow();
  pageCount = (rowCount +pageSize-1)/pageSize; //計(jì)算總頁(yè)數(shù)
  if(pageNo> pageCount) pageNo=pageCount; //調(diào)整待顯示的頁(yè)碼
  if(pageCount >0){
                    rs.absolute((pageNo-1)*pageSize+1); //將記錄指針定位到待顯示頁(yè)的第一條記錄上
                    int i = 0;
                    while(i){
                                for(int j = 0;j< numColumns;j++)
                              {
                                  String sTemp = rs.getString(j+1);
                                System.out.print(sTemp+" ");
                                }
                     i++;
                       rs.next();
                       System.out.println("");
                       }
                     }
                }
                  catch(Exception e){
                          System.out.println("query error:"+e);
                          }
                       }
  public void demo(int pageNo,int pageSize){
  try{
  JDBCScrollDisplay jd = new JDBCScrollDisplay();
  Connection con = jd.conn();
  String sql = "select * from bookInfo order by no";
  jd.query(con,sql,pageNo,pageSize);
  con.close();}
  catch(SQLException se){ System.out.println(se);}
  catch(Exception e){System.out.println(e);}}
  public static void main(String[] arg){
  JDBCScrollDisplay jsd = new JDBCScrollDisplay();
  int pageno = Integer.parseInt(arg[0]);
  int pagesize = Integer.parseInt(arg[1]);
  jsd.demo(pageno,pagesize);}}
  
  4 結(jié)束語(yǔ)
  JDBC是Java的一個(gè)標(biāo)準(zhǔn)SQL數(shù)據(jù)庫(kù)訪問(wèn)接口,它為數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)人員、數(shù)據(jù)庫(kù)前臺(tái)工具開(kāi)發(fā)人員提供一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口。開(kāi)發(fā)人員只需使用JDBC提供的類(lèi),調(diào)用這些類(lèi)的方法,即可對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),而無(wú)需關(guān)心所使用的具體是什么數(shù)據(jù)庫(kù)系統(tǒng)。在實(shí)際的使用中經(jīng)常會(huì)遇到要提供可滾動(dòng)的結(jié)果集,只需要在使用分頁(yè)數(shù)據(jù)時(shí)先聲明是一個(gè)可移動(dòng)的SQL語(yǔ)句。上例可以任何應(yīng)用在對(duì)數(shù)據(jù)庫(kù)做任意操作的基礎(chǔ)上,再分頁(yè)顯示。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
用JAVA從數(shù)據(jù)庫(kù)中讀出字段及內(nèi)容
請(qǐng)教JDBC怎么連接ORACLE數(shù)據(jù)庫(kù)
JSP連接各類(lèi)數(shù)據(jù)庫(kù)大全(上)
jsp與數(shù)據(jù)庫(kù)連接大全
JDBC ResultSet分析
java jdbc返回結(jié)果集條數(shù)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服