来自Read的SQLite锁定表

时间:2018-02-08 14:46:57

标签: c# database sqlite database-locking

问题:从SQLite获取数据库被锁定的错误 期望的结果:多个应用程序可以从数据库中读取,如果只有一个应用程序写入,则表格将不会被锁定。

我有一个C#应用程序,可以读写SQLite数据库。当应用程序的多个实例同时运行时,应用程序的任何实例都无法对数据库进行更改,但所有实例都可以从中读取。我发现的一切都说只要一个应用程序尝试一次写入BD就不应该被锁定。我的连接字符串明确指出 public dbPrismIIDirectory() { _databasePath = ""; try { _dbConn = new System.Data.SQLite.SQLiteConnection(); } catch (Exception exc) { System.Windows.Forms.MessageBox.Show(exc.Message); } } public Boolean open(String databasePath) { _databasePath = databasePath; // Attempt to open the database try { _dbConn.ConnectionString = String.Format("Data Source={0}; LockingMode=Normal; Synchronous=On", _databasePath); _dbConn.Open(); return true; } catch { return false; } } public Boolean CreateEntry() { try { sqlCMD.CommandText = //SET UP SQL HERE//; sqlCMD.ExecuteNonQuery(); return true; } catch (Exception exc) { System.Windows.Forms.MessageBox.Show(exc.Message); return false; } } 。关于会导致这种情况的任何建议?下面是运行的连接方法和遇到锁的写入:

private String _databasePath; private SQLiteConnection _dbConn;

{{1}}

1 个答案:

答案 0 :(得分:2)

作者需要对数据库的独占访问权限,因此它会阻止任何其他读者和作者。

允许一位作者与读者同时运行,如果您不使用网络,请启用WAL mode