SQLite:无法以编程方式打开网络文件,即使之前工作过

标签 sqlite visual-studio-2012 runtime-error

一年多来,我几乎每天都使用下面的代码打开位于网络计算机上的 SQLite 数据库文件。今天早上突然无法以编程方式打开文件。

private Boolean Connect(String strPathFile)
{
    // Initialize the connection object.
    this.DbConnection = null;

    try
    {
        // DATABASE: Create the connection string and set the settings.
        String strConnection = @"Data Source=" + strPathFile + @";Version=3;";

        // DATABASE: Connect to the database.
        this.DbConnection = new SQLiteConnection(strConnection);
        this.DbConnection.Open();

        return true;
    }

    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }

    return false;
}

该文件是一个网络资源,格式为“\Server\ShareName\FileName.db”(减去双引号)。

有趣的是。 SQLite Administrator 打开网络数据库文件没有问题,没有,而且重复。我也可以在本地打开文件。我将文件复制到我的本地驱动器并简单地更改了 Visual Studio 2012 (VS2012) 中的路径。

服务器看起来不错。自从我上次检查它以来,它在某个时候经历了重新启动。我假设是 Microsoft 更新。文件资源管理器浏览文件夹没有问题,正如我所说,SQLite 管理员可以打开网络文件。

我再次检查了权限,每个人都拥有完全控制权,服务器用户也拥有完全控制权,包括安全权限和共享权限。我检查了文件夹和文件,权限是一样的。我期望如此,因为 SQLite Administrator 可以打开该文件。服务器没有设置防火墙,Windows 防火墙或其他。我今天早上也重新检查过。同样,SQLite 管理员会对此进行提示。

我通过使用文件资源管理器在网络驱动器上制作文件副本来验证写入。那没有问题。

服务器是 Windows Server 2003。我使用的是 Windows 7 Professional 64 位。

我还尝试以只读模式打开数据库,但同样失败了。我期待这种行为。 SQLite Administrator 仍然运行良好。

我尝试了各种其他连接字符串,包括 SQLiteConnectionStringBuilder() 只是为了看看会发生什么,条条大路通罗马,即:

System.Data.SQLite.SQLiteException occurred
  HResult=-2147467259
  Message=unable to open database file
  Source=System.Data.SQLite
  ErrorCode=14
  StackTrace:
       at System.Data.SQLite.SQLite3.Open(String strFilename, SQLiteConnectionFlags connectionFlags, SQLiteOpenFlagsEnum openFlags, Int32 maxPoolSize, Boolean usePool)
       at System.Data.SQLite.SQLiteConnection.Open()
       at SQL.cSQL.Connect(String strPathFile) in C:\<Path to source file>:line 367
  InnerException: 

想法?

最佳答案

版本 > 1.0.82.0

  1. 将文件名中的前两个反斜杠加倍 (例如 "\\\\network\share\file.db")。

  2. 使用映射的驱动器号。

  3. 使用带有 parseViaFramework 的 SQLiteConnection 构造函数 bool 参数并为该参数传递“true”。

请参阅 SQL 帖子 here

关于SQLite:无法以编程方式打开网络文件,即使之前工作过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17303076/

相关文章:

java - 从android中的Sqlite数据库中检索空值

c++ - 如何在eclipse C/C++项目中使用sqlite3.c和sqlite3.h

javascript - 在 Visual Studio 11 中使用 Chrome 启用脚本调试

visual-studio-2010 - Visual Studio 2012 PowerShell 项目

android - 未能传递结果 ResultInfo android

mysql - 使用 2 个表和 2 个条件编写选择查询

sql - 将 SQLite SQL 文件导入 WEB SQL 数据库的最简单方法是什么

c# - visual studio 模板文件中还有哪些其他可用变量?

C++:处理大型列表时为 "Error: Pointer being freed was not allocated"

java - 在 voltdb 的存储过程中运行选择查询后出现错误