隨筆-3  評論-1  文章-13  trackbacks-0
          在數據庫查詢中,一般我們都是先獲得查詢的結果集,然后通過ResultSet.last (/rs.last) 將游標移到記錄集末,再用ResultSet.getRow() 函數來獲得最后一條記錄的行號,由此來獲得該記錄集的數量。

                   這個方法在oracle 數據庫中運行正常,但是換到MS SQL中就會報出

          java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unsupported method: ResultSet.last

          這樣的錯誤。

          解決辦法是:

          Statement變量要按照如下設置:

          stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);   

          或:

          Statement stmt = conn.createStatementResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

          但這樣做是將游標移到最后一條記錄的位置比較耗時,少量的記錄不太明顯。以下是測試的記錄: 

          1,用COUNT函數方法,該方法是在查詢中通過SQL的統計函數COUNT來統計查詢的記錄數。
          2,用ResultSet.last()方法。
          3,環境為XP,SQL SERVER 2000,JAVA
          4,記錄數:100000。
          5,結果:COUNT方法用時270毫秒;ResultSet.last()方法用時31846毫秒,大約32秒。
          這個結果大家是不是大吃一驚。
           原文地址 http://blog.csdn.net/yoyo_yaya/archive/2007/01/29/1497112.aspx

          posted on 2009-02-26 13:29 lcgxc 閱讀(803) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 明光市| 通山县| 凤阳县| 绥中县| 双鸭山市| 屏东县| 霞浦县| 芷江| 鹿邑县| 乌拉特后旗| 隆德县| 黄浦区| 钟祥市| 广平县| 札达县| 永和县| 东乌| 孟村| 黎平县| 宜君县| 阳山县| 寻乌县| 烟台市| 娱乐| 色达县| 青冈县| 阿拉善右旗| 衢州市| 台东县| 绥宁县| 安义县| 中江县| 清原| 荣成市| 彭阳县| 绥滨县| 天全县| 石河子市| 福清市| 昌宁县| 宣汉县|