feng

          飄逸~~~~~life

          SQL Server 2005 批量更新解決辦法

          這些天因為有數(shù)據(jù)割接的需求,于是有要寫關于批量更新的程序。我們的數(shù)據(jù)庫使用的是SQLSERVER2005,碰到了一些問題來分享下。
          首先注意Statement PreparedStatement的問題
          Statement sm = cn.createStatement();
          sm.addBatch(sql1);
          sm.addBatch(sql2);
          ...
          sm.executeBatch()

           用Statement的好處就是每次可以直接傳一個SQL語句進去,不用管那么多。可是在數(shù)據(jù)量比較大的時候,應該會對效率有影響。不建議使用。
          PreparedStatement ps = cn.preparedStatement(sql);
          {
           ps.setXXX(1,xxx);
           ...
           ps.addBatch();
          }
          ps.executeBatch();
          PreparedStatement是會預編譯的,只要一條SQL,不斷動態(tài)設值,然后addBatch(),在數(shù)據(jù)量大的時候比較好,非常建議使用。
          還有就是JDBC的驅動問題,很多同志可能還是在用2000的驅動呢,沒有用批量更新的程序沒有多大問題,可是一旦用了批量更新,出現(xiàn)很多問題,
          反正數(shù)據(jù)庫很卡,慢。還可以更新不了哦。
          我強烈建議大家更新JDBC驅動。
          但是如果出現(xiàn)
          SQLServerException: sp_cursoropen/sp_cursorprepare: 該語句參數(shù)只能是一個批或帶有單個 SELECT 語句的存儲過程,且不帶 FOR BROWSE、COMPUTE BY 或變量賦值。
          應該就是JDBC的版本問題,1.0的驅動有這個問題,好像不支持批量更新,我建議大家使用1.2
          我測試過了,完全沒有問題!
          提供一些數(shù)據(jù)連接參數(shù)
          jdbc.driverClassName:com.microsoft.sqlserver.jdbc.SQLServerDriver
          jdbc.url:jdbc:sqlserver://127.0.0.1:1444;databaseName=fax;selectMethod=cursor;

          我上傳了1.2的驅動
          點這里直接下載

          posted on 2009-04-09 11:09 feng 閱讀(1835) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 沧州市| 尉氏县| 滕州市| 大埔县| 甘南县| 河北区| 山丹县| 兖州市| 西峡县| 明水县| 南召县| 资中县| 加查县| 汪清县| 缙云县| 当涂县| 德惠市| 卓资县| 绥滨县| 红安县| 九龙坡区| 如皋市| 塘沽区| 钟山县| 苍山县| 磐石市| 华坪县| 双牌县| 凤阳县| 洱源县| 迁西县| 盐亭县| 丰原市| 济阳县| 乌兰察布市| 马鞍山市| 兴文县| 屏东市| 辽阳市| 六安市| 东乡县|