我想从mono访问sqlite数据库: 数据库存储在文件“languages.sqlite”中,并包含表“spanish-german” 。Linq to SQL with Mono:无法连接到我的sqlite数据库
- 我安装了MonoDevelop的数据库插件
- 我创建了一个数据库连接 - 与IDE工具
然后测试该连接 - 与IDE工具查询数据库。
SELECT * FROM “西班牙 - 德国”
“hablar | sprechen”
“hacer |玛沁,囤地”
该表有两列,一列与西班牙文字和德文翻译
- 我创建了一个LINQ类 - 用IDE。输出看起来不错。创建了数据库的类和表的另一个类。
现在我需要连接到我的代码中的数据库。这应该是相当直接的,但我不能得到它的工作。这里是我的代码:
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() “文件名不明”
显然,文件名是不正确的。数据库存储在文件夹数据库中。 我尝试以下的ConnectionStrings:
- “languages.sqlite”
- “数据库/ languages.sqlite”
- “语言”
- “数据库/语言”
- “数据源=语言.sqlite”
- “数据源=数据库/ languages.sqlite”
- “数据源=语言”
- “数据源=数据库/语言”
然后发现,MS有这些字符串和“数据源”自定义格式应该叫“地址”。所以,现在我使用 - “地址= languages.sqlite”
和我得到一个不同的异常:
Mono.Data.Tds.TdsInternalException已经抛出。服务器关闭了连接。
那是什么?我该如何解决它?
UPDATE:
我改变了构建选项为数据库“内容”,把它复制到输出目录。然后我添加了“版本= 3;”到connectionString。最后我改变了dataContext来使用sqLite。
所有这三个变化的程序的作品,如果其中一个被遗漏,它不会。
非常感谢。如果其中一个人会从他的评论中创建一个答案,我会接受它。
String DB_CONNECTION_STRING =“Data Source =。/ MyDictionaryDB.sqlite; Version = 3; New = False; Compress = False;”; //数据库和EXE位于同一个文件夹中。或尝试使用:String DB_CONNECTION_STRING =“URI = file:./ MyDictionaryDB.sqlite; Version = 3; New = False; Compress = False;”; – houssam 2014-10-01 21:41:40
但你为什么因为使用Sqlite而得到'SqlClient.SqlConnection'?请参阅http://stackoverflow.com/q/12648217/992406 – houssam 2014-10-01 21:49:56
这将是窃取你的辛苦赚来的代表...发布它自己并将其标记为接受:) – Noctis 2014-10-02 08:35:24