微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Sqlite在C#中的应用


在 .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")
)

//Pooling设置为true时,sql连接将从连接池获得,如果没有则新建并添加到连接池中,认是true。
//FailIfMissing认为false,如果数据库文件不存在,会自动创建一个新的,若设置为true,将不会创建,而是抛出异常信息


{
//在打开数据库时,会判断数据库是否存在,如果不存在,则在当前目录下创建一个
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("INSERT INTO [test] VALUES ({0},'杜思波技术讨论区域')",i);
cmd.ExecuteNonQuery();
}

for (int i = 5; i < 10; i++)
{
cmd.CommandText = string.Format("INSERT INTO [test] VALUES ({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));
}
}
}
}

在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没多大区别了


string datasource="h:/test.db";
System.Data.sqlite.sqliteConnection.CreateFile(datasource);
//连接数据库
System.Data.sqlite.sqliteConnection conn = new System.Data.sqlite.sqliteConnection();
System.Data.sqlite.sqliteConnectionStringBuilder connstr = new System.Data.sqlite.sqliteConnectionStringBuilder();
connstr.DataSource = datasource;
connstr.Password = "admin";//设置密码,sqlite ADO.NET实现了数据库密码保护
conn.ConnectionString = connstr.ToString();
conn.open();
//创建表
System.Data.sqlite.sqliteCommand cmd = new System.Data.sqlite.sqliteCommand();
string sql = "CREATE TABLE test(username varchar(20),password varchar(20))";
cmd.CommandText=sql;
cmd.Connection=conn;
cmd.ExecuteNonQuery();
//插入数据
sql = "INSERT INTO test VALUES('ekinglong','mypassword')";
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
//取出数据
sql = "SELECT * FROM test";
cmd.CommandText = sql;
System.Data.sqlite.sqliteDataReader reader = cmd.ExecuteReader();
StringBuilder sb = new StringBuilder();
while (reader.Read())
{
sb.Append("username:").Append(reader.GetString(0)).Append("\n")
.Append("password:").Append(reader.GetString(1));
}
MessageBox.Show(sb.ToString());


Reference:http://blog.csdn.net/Ricekeg/archive/2009/11/03/4763144.aspx

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐