sql2005 批量更新問題的解決方法
更新時間:2010年03月13日 12:39:40 作者:
這些天因為有數(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的驅(qū)動問題,很多同志可能還是在用2000的驅(qū)動呢,沒有用批量更新的程序沒有多大問題,可是一旦用了批量更新,出現(xiàn)很多問題,
反正數(shù)據(jù)庫很卡,慢。還可以更新不了哦。
我強烈建議大家更新JDBC驅(qū)動。
但是如果出現(xiàn)
SQLServerException: sp_cursoropen/sp_cursorprepare: 該語句參數(shù)只能是一個批或帶有單個 SELECT 語句的存儲過程,且不帶 FOR BROWSE、COMPUTE BY 或變量賦值。
應該就是JDBC的版本問題,1.0的驅(qū)動有這個問題,好像不支持批量更新,我建議大家使用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;
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的驅(qū)動問題,很多同志可能還是在用2000的驅(qū)動呢,沒有用批量更新的程序沒有多大問題,可是一旦用了批量更新,出現(xiàn)很多問題,
反正數(shù)據(jù)庫很卡,慢。還可以更新不了哦。
我強烈建議大家更新JDBC驅(qū)動。
但是如果出現(xiàn)
SQLServerException: sp_cursoropen/sp_cursorprepare: 該語句參數(shù)只能是一個批或帶有單個 SELECT 語句的存儲過程,且不帶 FOR BROWSE、COMPUTE BY 或變量賦值。
應該就是JDBC的版本問題,1.0的驅(qū)動有這個問題,好像不支持批量更新,我建議大家使用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;
相關文章
SqlServer 2005 T-SQL Query 學習筆記(3)
利用ROW_NUMBER()進行高效率的分頁。2010-02-02SqlServer 2005 T-SQL Query 學習筆記(2)
SqlServer 2005 T-SQL Query 學習筆記(2)2010-02-02sql server 2005中使用with實現(xiàn)遞歸的方法
這篇文章介紹了sql server 2005中使用with實現(xiàn)遞歸的方法,有需要的朋友可以參考一下2013-09-09快速將珊瑚蟲IP數(shù)據(jù)庫轉MS SQL2005的圖文教程
在幻想曲BLOG上看到不少朋友說,最近服務器上的IP數(shù)據(jù)好像不是很準確,于是重新做了一個新的,不少朋友可能需要這個數(shù)據(jù)庫,因為文件太大的緣故,所以直接提供快速轉換方法。2008-08-08