什么“数据源不能为空。使用:内存:打开内存数据库”是什么意思?

时间:2010-10-28 04:18:38

标签: c# system.data.sqlite

我最近将SQL Server数据库转换为SQLite数据库。但是当我尝试使用.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,但我没有收到这些错误。

4 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

当我实际上试图使用内存版本的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版)。