我最近将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,但我没有收到这些错误。
答案 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版)。