【问题标题】:What does "Data Source cannot be empty. Use :memory: to open an in-memory database" mean?“数据源不能为空。使用 :memory: 打开内存数据库”是什么意思?
【发布时间】:2011-05-01 16:23:00
【问题描述】:

我最近将我的 SQL Server 数据库转换为 SQLite DB。但是当我尝试使用.Open() 打开我的 SQLite 时,它​​会抛出这个错误:

Data Source cannot be empty.  Use :memory: to open an in-memory database

编辑:添加连接字符串:

ConnectionString = @"Data Source=D:\XXX.db;Version=3";
connection = new SQLiteConnection(connectionString);
connection.Open();

为什么我会得到这个?我将同一个 SQL Server 数据库转换为 SQL CE 和 mySQL,但没有收到这些错误。

【问题讨论】:

  • 请在问题中输入连接字符串。
  • ConnectionString = @"Data Source= D:\XXX.db;Version=3;connection = new SQLiteConnection(connectionString); connection.Open();
  • = 之后的空格是否重要?数据源= D:\XXX.db
  • 对不起,伙计们,这是我的错误..在一个地方我提到了没有空格的“数据源”..导致了问题。谢谢

标签: c# system.data.sqlite


【解决方案1】:

因为您的数据源是空的。将数据源参数添加到您的连接字符串。在打开 Sqlite 数据库之前。

【讨论】:

  • 它不是空的。我已经指定了确切的路径老兄.. connectionString = @"Data Source= D:\XXX.db;Version=3; connection = new SQLiteConnection(connectionString); connection.Open( );
  • 也许删除 `D:` 前面的空格并用双引号关闭 connectionString 可能会有所帮助。
  • 对不起,伙计们,这是我的错误..在一个地方我提到了没有空格的“数据源”..导致了问题。谢谢
【解决方案2】:

您尚未提供数据源名称,即 sqlite 文件所在的位置。

【讨论】:

  • 我做了,请参考我的其他 cmets
【解决方案3】:

您的数据源后面有一个空格:Data Source= D:\XXX.db。此外,在您的复制/粘贴中,连接字符串没有结束引号。这是一个适用于我的测试工具的连接字符串:

@"Data Source=C:\Temp\Test.db3;Pooling=true;FailIfMissing=false;Version=3"

【讨论】:

  • 谢谢老兄。我已经想通了,您可以在问题下方的评论中看到这一点
【解决方案4】:

我最近在尝试使用内存版本的 SQLite 时遇到了同样的错误。

我是这样设置连接的:

var connection = new SQLiteConnection("Filename=:memory:");
connection.Open();

得到错误

数据源不能为空。使用 :memory: 打开内存

然后我将其更改为这段代码,注意“SQL”部分不再大写:

var connection = new SqliteConnection("Filename=:memory:");
connection.Open();

现在它可以工作了。

工作的非大写版本来自 Microsoft.Data.Sqlite.SqliteConnection 命名空间,而 SQLite 版本来自 System.Data.SQLite.SQLiteConnection(我引用了 1.0.113.6 版本)。

【讨论】:

    猜你喜欢
    • 2019-12-06
    • 2011-01-08
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    相关资源
    最近更新 更多