我有一個windows服務,它有五個線程。每個線程都會拍攝不同的Excel文件,然後讀取excel行並插入到數據庫中。是否可以並行插入?目前我使用鎖定單一類插入。在Windows服務中如何從多個線程INSERT記錄到數據庫中?
回答
如果您正在插入並且DBMS爲您創建密鑰,那麼應該沒有問題,也不需要鎖定。
這取決於您的數據庫。如果你的數據庫能夠處理多個連接(它現在不應該這樣做)。
它與你的班級沒有任何關係,你在那裏做插入。任何鎖定都沒有必要(除非,當然,你的數據庫不支持多重連接,這是我嚴重懷疑的)。
以下是我的代碼,因爲我usig鎖定每個thead將等待另一個thead完成其INSERT操作。我想避免線程等待,並想要插入parallally。給出一個解決方案,每個線程可以獨立地插入。 – Aswin
公共無效在WriteToServer(數據表的dataTable,OracleBulkCopyOptions選項,IEnumerable的
確保它在交易中,並擺脫鎖定!你應該沒問題......假設你使用的任何數據庫都支持事務。
大多數現代數據庫將支持多次寫入,使用事務更安全,因爲另一次出錯。
- 1. 如何從服務器數據庫檢索記錄到本地數據庫中
- 2. 多線程Windows服務的線程庫
- 3. Windows服務中的多線程/數據庫輪詢
- 4. Windows服務中的多個線程
- 5. 如何從WebSql數據庫以及服務器數據庫中刪除記錄
- 6. 如何從多個線程記錄數據?
- 7. 如何在Java線程中將記錄插入數據庫?
- 8. 如何從我的數據庫中獲取多個記錄?
- 9. Windows服務+從數據庫中讀取
- 10. 在多線程環境中將記錄插入到數據庫表中
- 11. 如何停止C#中包含多個線程的Windows服務?
- 12. 如何從同一個文本框中添加多個記錄到數據庫
- 13. 如何在delphi 7,Windows XP中啓動線程到服務中?
- 14. MySQL的INSERT SELECT從多個表中,如果記錄不存在
- 15. Windows服務中的多線程
- 16. 從多個數據庫搜索記錄
- 17. 如何在oracle數據庫中插入多個clob記錄
- 18. 多個數據庫記錄
- 19. 多線程Windows服務
- 20. 多線程Windows服務 - Erlang
- 21. Windows服務和多線程
- 22. 從線程獲取數據庫中的最新記錄
- 23. 如何使用PHP MYSQL將數據庫表和每個記錄從一個數據庫服務器複製到另一個數據庫服務器?>
- 24. 從數組中插入多條記錄到我的數據庫
- 25. 記錄Windows服務
- 26. 我可以同步從iPhone的SQLite數據庫的多個記錄到服務器上的mysql數據庫
- 27. 使用WCF數據服務更新數據庫中的記錄
- 28. 在服務中運行多個線程
- 29. 如何在asmx web服務中返回多個數據庫行
- 30. 如何在codeigniter中連接數據庫多個服務器?
以下是我的代碼,因爲我usig鎖定每個thead將等待另一個thead完成其INSERT操作。我想避免線程等待,並想要插入parallally。給出一個解決方案,每個線程可以獨立地插入。 – Aswin
公共無效在WriteToServer(數據表的dataTable,OracleBulkCopyOptions選項,IEnumerable的 columnMappings) { 鎖(writeLock) { 使用(VAR bulkcopy =新OracleBulkCopy(的ConnectionString)) { bulkcopy.DestinationTableName = destinationTable會; (列映射中的var映射) bulkcopy.ColumnMappings.Add(mapping); bulkcopy.BulkCopyTimeout = TimeOut.Value; bulkcopy.WriteToServer(dataTable); –
Aswin
您能否編輯您的問題,讓代碼駐留在問題中,然後刪除包含該代碼的兩條評論。 – Spontifixus