我想从mono访问sqlite数据库: 数据库存储在“languages.sqlite”文件中,并包含“spanish-german”表。
然后使用IDE工具查询数据库测试此连接。
从“西班牙语 - 德语”中选择*
“hablar | sprechen”
“hacer | machen,tun”
该表有两列,一列是西班牙语,另一列是德语翻译
现在我需要在我的代码中连接到数据库。这应该是相当简单的,但我不能让它工作。这是我的代码:
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()“filename unknown”
显然文件名不正确。数据库存储在文件夹数据库中。 我尝试了以下连接字符串:
然后发现MS有这些字符串的自定义格式,“数据源”应该称为“Addr”。所以现在我正在使用 - “Addr = languages.sqlite”
我得到了一个不同的例外:
那是什么?我该如何解决?抛出了Mono.Data.Tds.TdsInternalException。服务器关闭了连接。
更新
我将数据库的构建选项更改为“content”并将其复制到输出目录。然后我添加了“Version = 3;”到connectionString。最后我将dataContext更改为使用sqLite。
通过所有三个更改,程序可以正常工作,如果其中一个被省略,则不会。
非常感谢你。如果你们中的一个人会从他的评论中创建一个答案,我会接受它。
答案 0 :(得分:0)
我将数据库的构建选项更改为&#34; content&#34;并将其复制到输出目录。然后我添加了#34;版本= 3;&#34;到connectionString。最后我将dataContext更改为使用sqLite。
现在程序运行良好。