我创建了一个SqlLite 3 db文件,并将其放置在项目的App_Data文件夹(ASP.Net Web API)中。我似乎无法连接到它。异常消息含糊不清,我无法确定哪里出了问题。权限?文件未找到?不知道。

我在我的web.config中创建了以下connectionString条目:

 <connectionStrings>
<add name="LiteConnection" connectionString="Data Source=~\App_Data\repository.s3db;Version=3;" />




当我尝试打开()连接时会抛出异常。我开始怀疑IISExpress(VS2012)可能无法写入此目录或其他内容吗?

  private string _dbLitePath = ConfigurationManager.ConnectionStrings["LiteConnection"].ConnectionString;

...
      public IDbConnection GetConnection()
    {
        try
        {
            if (_connection == null)
                _connection = new SQLiteConnection(_dbLitePath);

            if (_connection.State != ConnectionState.Open)
            {
                _connection.ConnectionString = _dbLitePath;
                _connection.Open(); // kaaaaasplat!
            }
        }
        catch (SQLiteException e)
        {

        }
        return _connection;
    }

最佳答案

尝试将您的连接字符串更改为:

 connectionString="Data Source=|DataDirectory|\repository.s3db



DataDirectory是一个替换字符串,它指示到
数据库。它消除了对完整路径进行硬编码的需要
导致一些问题,因为数据库的完整路径可能是
在不同的地方序列化。 DataDirectory还可以轻松实现
共享项目并部署应用程序。


引用Where is DataDirectory

关于c# - Sqlite3-“无法打开数据库”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16698877/

10-17 02:31