在 .NET 里面使用 SQLite, 我这里使用的wrapper是 System.Data.SQLite,它只需要一个dll,接口符合ADO.Net 2.0的定义,性能也不错,NHibernate用的也是它,目前支持ADO.NET 3.5了,支持集成在 VS2005 和 VS2008里面,而且支持wince,是个亮点。因为符合ADO.NET的规范,所以使用方式,基本和 SqlClient, OleDb等原生的一致。

      

View Code
1 using System.Data;
2  using System.Data.SQLite;
3 //...
4 using (SQLiteConnection cn = new SQLiteConnection(
5 "Data Source=Test.db3;Pooling=true;FailIfMissing=false")
6 )
7 //Pooling设置为true时,SQL连接将从连接池获得,如果没有则新建并添加到连接池中,默认是true。
8 //FailIfMissing默认为false,如果数据库文件不存在,会自动创建一个新的,若设置为true,将不会创建,而是抛出异常信息。
9
10 {
11 //在打开数据库时,会判断数据库是否存在,如果不存在,则在当前目录下创建一个
12 cn.Open();
13 using (SQLiteCommand cmd = new SQLiteCommand())
14 {
15 cmd.Connection = cn;
16 //建立表,如果表已经存在,则报错
17 cmd.CommandText = "CREATE TABLE [test] (id int, name nvarchar(20))";
18 cmd.ExecuteNonQuery();
19 //插入测试数据
20 for (int i = 2; i < 5; i++)
21 {
22 cmd.CommandText = string.Format("INSERT INTO [test] VALUES ({0}, '杜思波技术讨论区域')", i);
23 cmd.ExecuteNonQuery();
24 }
25 for (int i = 5; i < 10; i++)
26 {
27 cmd.CommandText = string.Format("INSERT INTO [test] VALUES ({0}, 'English Test')", i);
28 cmd.ExecuteNonQuery();
29 }
30 //读取数据
31 cmd.CommandText = "SELECT * FROM [test]";
32 using (SQLiteDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
33 {
34 while (dr.Read())
35 {
36 Console.WriteLine("第{0} 条:{1}", dr.GetValue(0), dr.GetString(1));
37 }
38 }
39 }
40 }
C#中使用SQLite

1、通过Add References引用SQLite ADO .NET安装目录的bin目录下的System.Data.SQLite.DLL。
2、创建数据库文件:因为始终是个0字节文件,应该利用IO也可以(?!)。
System.Data.SQLite.SQLiteConnection.CreateFile(datasource);3、连接数据库
System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection(connectionString);connectionString中包含了数据库的一些配置信息,比如数据库文件,数据库打开的密码等,可以利用System.Data.SQLite.SQLiteConnectionStringBuilder来辅助创建connectionString
4、创建表、读取数据等和Access或MS SQL没多大区别了
View Code
1 //创建一个数据库文件
2 string datasource="h:/test.db";
3 System.Data.SQLite.SQLiteConnection.CreateFile(datasource);
4 //连接数据库
5 System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection();
6 System.Data.SQLite.SQLiteConnectionStringBuilder connstr = new System.Data.SQLite.SQLiteConnectionStringBuilder();
7 connstr.DataSource = datasource;
8 connstr.Password = "admin";//设置密码,SQLite ADO.NET实现了数据库密码保护
9 conn.ConnectionString = connstr.ToString();
10 conn.Open();
11 //创建表
12 System.Data.SQLite.SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand();
13 string sql = "CREATE TABLE test(username varchar(20),password varchar(20))";
14 cmd.CommandText=sql;
15 cmd.Connection=conn;
16 cmd.ExecuteNonQuery();
17 //插入数据
18 sql = "INSERT INTO test VALUES('ekinglong','mypassword')";
19 cmd.CommandText = sql;
20 cmd.ExecuteNonQuery();
21 //取出数据
22 sql = "SELECT * FROM test";
23 cmd.CommandText = sql;
24 System.Data.SQLite.SQLiteDataReader reader = cmd.ExecuteReader();
25 StringBuilder sb = new StringBuilder();
26 while (reader.Read())
27 {
28 sb.Append("username:").Append(reader.GetString(0)).Append("\n")
29 .Append("password:").Append(reader.GetString(1));
30 }
31 MessageBox.Show(sb.ToString());
posted on 2011-02-21 21:10  Penny●zheng  阅读(428)  评论(0)    收藏  举报