背景:
阅读新闻

C#使用SQLite数据库

  作者: 今日评论: [字体: ]

SQLite 是目前比较流行的一个开源、免费的小型的Embeddable RDBMS(关系型数据库),用C实现,内存占用较小,支持绝大数的SQL92标准,个别不支持的情况,在这里说明

对各种语言的支持也比较不错,wrapper很多。

Google Gears 、Mozilla 和 Adobe AIR 都在使用sqlite,应该说明其还是很不错的

SQLite 的关键字列表,这里

支持的sql语法,在这里


.NET 里面使用 SQLite, 我这里使用的wrapper是 System.Data.SQLite,它只需要一个dll,接口符合ADO.Net 2.0的定义,性能也不错,NHibernate用的也是它,目前支持ADO.NET 3.5了,支持集成在 VS2005 和 VS2008里面,而且支持wince,是个亮点

因为符合ADO.NET的规范,所以使用方式,基本和 SqlClient, OleDb等原生的一致

using System.Data; 
using System.Data.SQLite; 
//... 

using (SQLiteConnection cn = new SQLiteConnection( 
"Data Source=Test.db3;Pooling=true;FailIfMissing=false") 
) 
{ 
//在打开数据库时,会判断数据库是否存在,如果不存在,则在当前目录下创建一个 
cn.Open(); 

using (SQLiteCommand cmd = new SQLiteCommand()) 
{ 
cmd.Connection = cn; 

//建立表,如果表已经存在,则报错 
cmd.CommandText = "CREATE TABLE [test] (id int, name nvarchar(20))"; 
cmd.ExecuteNonQuery(); 

//插入测试数据 
for (int i = 2; i < 5; i++) 
{ 
[我的空间服务商竟然把下面的单词也屏蔽了,太业余了.如果你怕买到这么牛逼的空间的话,可以联系] 
cmd.CommandText = string.Format("I_NSERT INTO [test] V_ALUES ({0}, '中文测试')", i);





cmd.ExecuteNonQuery(); } for (int i = 5; i < 10; i++) { cmd.CommandText = string.Format("I_NSERT INTO [test] V_ALUES ({0}, 'English Test')", i); cmd.ExecuteNonQuery(); } //读取数据 cmd.CommandText = "SELECT * FROM [test]"; using (SQLiteDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { while (dr.Read()) { Console.WriteLine("第{0} 条:{1}", dr.GetValue(0), dr.GetString(1)); } } } }

//引用2
http://www.cnblogs.com/chris1943/archive/2008/02/03/1063279.html
刚开始的时候没注意语法
后来才发现,原来用SQLite分页是世界上最简单的。
如果我要去11-20的Account表的数据
Select * From Account Limit 9 Offset 10;
以上语句表示从Account表获取数据,跳过10行,取9行

嗯,我觉得这个特性足够让很多的web中型网站使用这个了。

也可以这样写 select * from account limit10,9和上面的的效果一样。
这种写法MySQL也支持。

来源:http://www.zu14.cn/2009/01/07/dotnet-sqlite/
录入日期:[2009-11-8 0:08:00]
收藏 推荐 打印 | 录入:mikebai | 阅读:
文章评论      
正在加载评论列表...
评论表单加载中...