有时想用Sqlite作点小东西,特别是Windform程序,这就用到了Sqlite这个嵌入式数据库,选择一般是到Sqlite官网下载它的SDK,但是SDK有系统限制,32/64位2个版本。
更好的选择是使用Mono.Data.Sqlite,到Mono官网下载、安装Mono,再到安装目录下lib\mono\4.5找到Mono.Data.Sqlite.dll(4.5是.Net版本号)引入到项目就可以了。
经过深入的测试及研究,此方法需要用到windows/linux的sdk,即.dll/.so
参考:http://www.mono-project.com/Release_Notes_Mono_2.6#LINQ_to_SQL
数据库连接串举例
using System.Linq;
using System.Data.Linq;
using Mono.Data.Sqlite;
var conn = new SqliteConnection (
"DbLinqProvider=Sqlite;" +
"Data Source=Northwind.db3");var db = new DataContext (conn);
下面这种用法,遇到报错了,不支持DbLinqConnectionType关键字
var db = new DataContext("DbLinqProvider=Sqlite; " +
"DbLinqConnectionType=Mono.Data.Sqlite.SqliteConnection, Mono.Data.Sqlite, " +
"Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756; " +
"Data Source=Northwind.db3");
最恶心的事情是连接打开时报错
其他信息: 类型“Mono.Data.Sqlite.SqliteConnectionHandle”违反了继承安全性规则。派生类型必须与基类型的安全可访问性匹配或者比基类型的安全可访问性低。
解决办法在这里,http://www.deltasblog.co.uk/tag/bug/,是mono的bug