代码改变世界

【原】sqlite

2013-03-20 13:32  蜡笔小旧  阅读(293)  评论(0编辑  收藏  举报

一直想找个ms access的替代品。终于找到了sqlite.

据说firefox也是用的这个数据库,效率也很高,并且跨平台,支持多种语言,文件型(官方文档说支持内存数据库).

相关语法:

(1)top-> limit

select categoryId from Categories limit 5

.NET相关:

.NET下需要下载 http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

System.Data.SQLite.dll(分多个版本32位、64位,.NET2.0-.NET4.5)

System.Data.SQLite.Linq.dll(可选,不知道如何用)

将dll添加引用到项目中即可。

View Code
const string connectingString = "Data Source=northwindEF.db";
            using (SQLiteConnection cnn = new SQLiteConnection(connectingString))
            {
                cnn.Open();

                var cmd = cnn.CreateCommand();
                cmd.CommandText = "select count(*) from Categories";
                object count = cmd.ExecuteScalar();

                Console.WriteLine(count);
            }

如需支持linq,可以尝试DbLinq.

需要添加引用:

DbLinq.dll

DbLinq.Sqlite.dll

添加模型文件需通过工具DbMetal.exe

DbMetal.exe --database=northwind --provider=sqlite --conn="Data Source=northwindEF.db" --dbml=test.dbml 或

DbMetal.exe --database=northwind --provider=sqlite --conn="Data Source=northwindEF.db" --cs=test.cs

注:需要添加【System.Data.SQLite.dll】到DbMetal.exe目录,才能成功执行此命令.

View Code
            using (var context = new NorthWind(new SQLiteConnection(connectingString)))
            {
                context.ObjectTrackingEnabled = true;
                context.Log = Console.Out;

                var ca =  (from p in context.Categories
                             select p)
                                 .FirstOrDefault();

                ca.CategoryName = ca.CategoryName + "new";
                context.SubmitChanges();

                Console.WriteLine("update");
            }