6

我有一个带有 System.Data.Sqlite (1.0.82) 的 .NET 4 应用程序(混合模式),用于对加密数据库进行数据库访问。

当我将应用程序安装到“c:\program files\myfolder”时,连接到 sqlite 数据库文件的速度很慢。日志文件显示延迟了几秒钟的是 sqlite 连接语句。

当我执行以下操作时,问题不会发生:

  • 以管理员权限运行应用程序
  • 安装除 c:\program files\ 以外的任何其他位置
  • 将应用程序安装到 c:\program files\,但将数据库移动到另一个文件夹。

我不知道这可能是什么原因......

4

2 回答 2

5

如果 DB 文件位于应用程序目录中,那么 UAC 很可能会将其移动到“...appdata\Local\VirtualStore\Program Files”目录。最佳做法是创建您自己的 appdata\MyApp 文件夹并将原始数据库从 c:\program files\MyApp 文件夹中复制出来。

于 2012-11-23T06:13:57.323 回答
1

它有助于以只读模式打开数据库。(无论如何,您应该只在程序文件文件夹中保留只读内容。)

只需附加";Read Only=True"到连接字符串。

private const string CONN_TEMPL = "Data Source={0};Version=3;Read Only=True";
var conn = new SQLiteConnection(
    String.Format(CultureInfo.InvariantCulture, CONN_TEMPL, databasePath)
);
于 2014-11-25T16:59:12.997 回答