簡體   English   中英

SQLite和C#]如何控制編輯db文件的人數?

[英]SQLite & C# ] How can I control the number of people editing a db file?

我現在正在使用SQLite編程一個簡單的客戶信息管理軟件。

一個exe文件,一個db文件,一些dll文件。 - 而已 :)

2〜4個人可能會同時運行該exe文件並訪問數據庫。

他們不僅會閱讀,而且會經常編輯。

是的,現在這里是最著名的問題之一...“同步”

每當有人試圖編輯它時,我都試圖創建/刪除一個臨時的空文件。 (這是訪問數據庫的“鑰匙”。)

但是必須有更好的方法:(

預防此問題的最佳方法是什么?

好了,SQLite已經鎖定了每次使用的數據庫文件,其想法是多個應用程序可以共享同一數據庫。

但是,SQLite文檔明確警告要通過網絡使用它:

SQLite將在網絡文件系統上運行,但由於與大多數網絡文件系統相關的延遲,性能不會很好。 另外,許多網絡文件系統實現的文件鎖定邏輯都包含錯誤(在Unix和Windows上均如此)。 如果文件鎖定無法正常工作,則兩個或多個客戶端程序可能會同時修改同一數據庫的同一部分,從而導致數據庫損壞。 由於此問題是由底層文件系統實現中的錯誤引起的,因此SQLite無法阻止它。

一條好的經驗法則是,在將通過網絡文件系統從多台計算機同時訪問同一數據庫的情況下,應避免使用SQLite。

因此,假設您的“ 2-4個人”使用網絡文件共享位於不同的計算機上,建議您不要使用SQLite。 而是使用傳統的客戶端/服務器RDBMS,該客戶端/服務器RDBMS 設計用於來自多個主機的多個並發連接。

您的應用程序仍需要考慮並發問題(除非推測獲取關於無論用戶目前正在研究,這通常是一個餿主意鎖),但至少你不會有應對網絡文件系統鎖定的問題也是如此

您正在與多個訪問數據庫的用戶打交道時遇到一些經典問題:丟失的更新。

請參閱有關並發的本教程: http : //www.brainbell.com/tutors/php/php_mysql/Transactions_and_Concurrency.html

至少您不必擔心db文件本身會因此而損壞,因為SQLite在寫入時會鎖定整個文件。 話雖這么說,但如果您希望多個客戶端同時訪問您的應用,則SQLite不建議您使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM