c# - 使用 Mono : Can't connect to my sqlite database 的 Linq to SQL

标签 c# linq sqlite mono

我想从 mono 访问一个 sqlite 数据库: 数据库存储在文件“languages.sqlite”中并包含表“spanish-german”。

  • 我安装了 monodevelop 数据库插件
  • 我创建了一个数据库连接 - 使用 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);

这编译得很好,但在运行时,代码在最后的打印语句处停止。

System.Data.SqlClient.SqlConnection.Open() "filename unknown"

显然文件名不正确。数据库存储在文件夹数据库中。 我尝试了以下连接字符串:

  • “语言.sqlite”
  • “数据库/语言.sqlite”
  • “语言”
  • “数据库/语言”
  • “数据源=languages.sqlite”
  • “数据源=databases/languages.sqlite”
  • “数据源=语言”
  • “数据源=数据库/语言”

然后发现MS对这些字符串有自定义格式,“Data Source”应该叫“Addr”。所以现在我正在使用 - “Addr=languages.sqlite”

我得到了一个不同的异常:

Mono.Data.Tds.TdsInternalException has been thrown. Server closed the connection.

那是什么?我该如何解决?

更新:

我将数据库的构建选项更改为“content”并将其复制到输出目录。然后我添加了“Version=3;”到连接字符串。最后,我将 dataContext 更改为使用 sqlite。

通过所有三个更改,程序可以正常工作,如果其中一个被遗漏,它就不会。

非常感谢。如果你们中的一个人能根据他的评论创建一个答案,我会接受。

最佳答案

我将数据库的构建选项更改为“content”并将其复制到输出目录。然后我添加了“Version=3;”到连接字符串。最后,我将 dataContext 更改为使用 sqlite。

现在程序运行正常。

关于c# - 使用 Mono : Can't connect to my sqlite database 的 Linq to SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26137487/

相关文章:

c# - 如何使用 C# 检查一个类是否实现了泛型并与泛型接口(interface)?

c# - 从 where 子句返回一个元素或第一个元素

android - android如何访问 Assets 文件夹中包含的sqlite数据库

javascript - knex.js - 读取然后更新会引发错误

c# - Azure JSON 响应反序列化 C#

c# - 为什么 Int32.Equals(Int16) 返回 true,而 reverse 不返回?

c# - 为什么查询字符串参数包含两次 - asp.net boolean

c# - 如何从自定义列表中获取不同的列表?

c# - 枚举哈希集并从中删除元素

javascript - Phonegap 拍照并将图像(BLOB)插入数据库 SQLite