Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Mono从Linq到SQL:无法连接到我的sqlite数据库_C#_Linq_Sqlite_Mono - Fatal编程技术网

C# 使用Mono从Linq到SQL:无法连接到我的sqlite数据库

C# 使用Mono从Linq到SQL:无法连接到我的sqlite数据库,c#,linq,sqlite,mono,C#,Linq,Sqlite,Mono,我想从mono访问sqlite数据库: 数据库存储在文件languages.sqlite中,并包含西班牙语-德语表 我安装了monodevelop数据库addin 我用IDE工具创建了一个数据库连接 然后用IDE工具查询数据库测试了这个连接 从西班牙语和德语中选择* 哈布拉·斯普雷岑 哈瑟|马辰,屯 该表有两列,一列是西班牙语单词,另一列是德语翻译 我用IDE创建了一个LINQ类。输出看起来不错。为数据库创建了一个类,为表创建了另一个类。 现在我需要在代码中连接到数据库。这应该相当简单,但我无法

我想从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”?看那会偷走你辛苦赚来的好名声。。。亲自张贴并标记为已接受: