C# 使用Mono从Linq到SQL:无法连接到我的sqlite数据库
我想从mono访问sqlite数据库: 数据库存储在文件languages.sqlite中,并包含西班牙语-德语表 我安装了monodevelop数据库addin 我用IDE工具创建了一个数据库连接 然后用IDE工具查询数据库测试了这个连接 从西班牙语和德语中选择* 哈布拉·斯普雷岑 哈瑟|马辰,屯 该表有两列,一列是西班牙语单词,另一列是德语翻译 我用IDE创建了一个LINQ类。输出看起来不错。为数据库创建了一个类,为表创建了另一个类。 现在我需要在代码中连接到数据库。这应该相当简单,但我无法让它工作。这是我的密码:C# 使用Mono从Linq到SQL:无法连接到我的sqlite数据库,c#,linq,sqlite,mono,C#,Linq,Sqlite,Mono,我想从mono访问sqlite数据库: 数据库存储在文件languages.sqlite中,并包含西班牙语-德语表 我安装了monodevelop数据库addin 我用IDE工具创建了一个数据库连接 然后用IDE工具查询数据库测试了这个连接 从西班牙语和德语中选择* 哈布拉·斯普雷岑 哈瑟|马辰,屯 该表有两列,一列是西班牙语单词,另一列是德语翻译 我用IDE创建了一个LINQ类。输出看起来不错。为数据库创建了一个类,为表创建了另一个类。 现在我需要在代码中连接到数据库。这应该相当简单,但我无法
string connectionString = "Data Source=languages.sqlite";
DataContext dataContext = new DataContext (connectionString);
Table<Spanish_German> words = dataContext.GetTable<Spanish_German> ();
var query =from word in words select word;
foreach (var word in query)
Console.WriteLine (word.Spanish);
这可以很好地编译,但在运行时,代码会在最后的print语句处停止
System.Data.SqlClient.SqlConnection.Open文件名未知
显然文件名不正确。数据库存储在数据库的文件夹中。
我尝试了以下连接字符串:
languages.sqlite
databases/languages.sqlite
语言
数据库/语言
数据源=languages.sqlite
数据源=databases/languages.sqlite
数据源=语言
数据源=数据库/语言
然后发现MS对这些字符串有一个自定义格式,数据源应称为Addr。所以现在我用
-Addr=languages.sqlite
我得到了一个不同的例外:
已引发Mono.Data.Tds.TdsInternalException。服务器关闭了连接
那是什么?我怎样才能修好它
更新:
我将数据库的构建选项更改为内容,并将其复制到输出目录。然后我添加了Version=3;连接字符串。最后,我将dataContext更改为使用sqLite 在这三个变化中,程序都起作用,如果其中一个被忽略,它就不起作用
多谢各位。如果你们中有人根据他的评论创建一个答案,我会接受它。我将数据库的构建选项更改为内容,并将其复制到输出目录。然后我添加了Version=3;连接字符串。最后,我将dataContext更改为使用sqLite
现在程序运行正常。String DB\u CONNECTION\u String=Data Source=./MyDictionaryDB.sqlite;版本=3;新=假;Compress=False;;//其中数据库和EXE位于同一文件夹中。或者尝试使用:String DB\u CONNECTION\u String=URI=file:./MyDictionaryDB.sqlite;版本=3;新=假;压缩=假;;但是,既然您使用的是Sqlite,为什么要使用“SqlClient.SqlConnection”?看那会偷走你辛苦赚来的好名声。。。亲自张贴并标记为已接受: