Linq to SQL with Mono:Can';t连接到我的sqlite数据库
本文关键字:连接 我的 数据库 sqlite SQL to with Mono Can Linq | 更新日期: 2023-09-27 18:25:07
我想从mono访问sqlite数据库:数据库存储在文件"languages.sqlite"中,并包含表"西班牙语-德语"。
- 我安装了monodedevelop数据库插件
- 我用IDE工具创建了一个数据库连接
-
然后用IDE工具查询数据库测试了这种连接。
从"西班牙语-德语"中选择*
"hablar | sprechen"
"hacer|machen,tun"
该表有两列,一列包含西班牙语单词,另一列包含德语翻译
- 我用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"
- "数据库/语言.sqlite"
- "语言"
- "数据库/语言"
- "数据源=语言.sqlite"
- "数据源=数据库/语言.sqlite"
- "数据源=语言"
- "数据源=数据库/语言"
然后发现MS对这些字符串有一个自定义格式,"数据源"应该被称为"Addr"。所以现在我使用-"Addr=languages.sqlite"
我得到了一个不同的例外:
引发了Mono.Data.Tds.TdsInternalException。服务器关闭了连接。
那是什么?我该怎么修?
更新:
我将数据库的构建选项更改为"内容",并将其复制到输出目录中。然后我在connectionString中添加了"Version=3;"。最后,我将dataContext更改为使用sqLite。
对于这三个更改,程序都是有效的,如果其中一个被排除在外,它就不会。
非常感谢。如果你们中的一个人能根据他的评论创建一个答案,我会接受的
我将数据库的构建选项更改为"content",并将其复制到输出目录中。然后我在connectionString中添加了"Version=3;"。最后,我将dataContext更改为使用sqLite。
现在程序运行良好。