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

时间:2014-10-01 08:46:39

标签: c# linq sqlite mono

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

  • 我安装了monodevelop database addin
  • 我使用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()“filename unknown”

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

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

然后发现MS有这些字符串的自定义格式,“数据源”应该称为“Addr”。所以现在我正在使用   - “Addr = languages.sqlite”

我得到了一个不同的例外:

  

抛出了Mono.Data.Tds.TdsInternalException。服务器关闭了连接。

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

更新

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

通过所有三个更改,程序可以正常工作,如果其中一个被省略,则不会。

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

1 个答案:

答案 0 :(得分:0)

我将数据库的构建选项更改为&#34; content&#34;并将其复制到输出目录。然后我添加了#34;版本= 3;&#34;到connectionString。最后我将dataContext更改为使用sqLite。

现在程序运行良好。