详细介绍C#操作SQLite数据库从下载到编程的整套方法

任何一个数据库都是有他自己的应用场合的,不管你是做网络应用,还是做桌面程序,其中,特别是桌面安装程序,可以说Sqlite的出现对于程序员与用户之间减少了不少的"麻烦",因为sqlite基本能够胜任mysql的工作,在SQLite出现之前,数据量大的情况下,我们一直使用ACCESS,数据量小,则文件存储。ACCESS不支持事务原子性等等。好了,本文不过多地讨论为什么要用Sqlite,而不用Access的问题。我想我重点放在如何使用好sqlite的问题上面来...我打算分为五个小节来介绍!


一:安装

SQLITE,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统。我是在http://sqlite.phxsoftware.com/(An open source ADO.NET provider for the SQLite database engine)地址中下载的可执行文件EXE,(有无毒自行查杀),安装后根目录如下:

 

Bin下有一个测试工具,可以查看本地运行SQLITE的各项性能指标。


二:新建数据库

安装完毕后,打开visual studio,新建数据连接,可以看到数据源多了一项SQLite。

 

新建连接,如下图。SQLITE的数据库,保存后是一个文件。

 


三:数据库维护

可以在VS中方面的维护SQLITE数据,如下图:

 

可以在VS中使用类似SQL查询分析器的功能,如下图:

 


四:混合模式

安装完毕,可以直接在项目集的引用中,多了

System.Data.SQLite

System.Data.SQLite.Linq

两个程序集,由于http://sqlite.phxsoftware.com/的System.Data.SQLite是混合模式程序集,是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。故需要在App.config中配置如下参数。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>

五:SQLiteHelper 操作类
 
最后,提供一个自己写的SQLiteHelper:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;
using System.Data;
using System.Data.Common;
namespace Com.Luminji.DataService.SQLHelpers
{
public class SQLiteHelper
{
/// <summary>
/// ConnectionString样例:Datasource=Test.db3;Pooling=true;FailIfMissing=false
/// </summary>
public static string ConnectionString { get; set; }
private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, params object[] p)
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Parameters.Clear();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.CommandType = CommandType.Text;
cmd.CommandTimeout = 30;
if (p != null)
{
foreach (object parm in p)
cmd.Parameters.AddWithValue(string.Empty, parm);
}
}
public static DataSet ExecuteQuery(string cmdText, params object[] p)
{
using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))
{
using (SQLiteCommand command = new SQLiteCommand())
{
DataSet ds = new DataSet();
PrepareCommand(command, conn, cmdText, p);
SQLiteDataAdapter da = new SQLiteDataAdapter(command);
da.Fill(ds);
return ds;
}
}
}
public static int ExecuteNonQuery(string cmdText, params object[] p)
{
using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))
{
using (SQLiteCommand command = new SQLiteCommand())
{
PrepareCommand(command, conn, cmdText, p);
return command.ExecuteNonQuery();
}
}
}
public static SQLiteDataReader ExecuteReader(string cmdText, params object[] p)
{
using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))
{
using (SQLiteCommand command = new SQLiteCommand())
{
PrepareCommand(command, conn, cmdText, p);
return command.ExecuteReader(CommandBehavior.CloseConnection);
}
}
}
public static object ExecuteScalar(string cmdText, params object[] p)
{
using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))
{
using (SQLiteCommand command = new SQLiteCommand())
{
PrepareCommand(command, conn, cmdText, p);
return command.ExecuteScalar();
}
}
}
}
}
  
PS:简介介绍一下Sqlite的特点
 
SQLite官方网站: http://www.sqlite. org/ 时第一眼看到关于SQLite的特性。
 
  1. ACID事务
 
  2. 零配置 – 无需安装和管理配置
 
  3. 储存在单一磁盘文件中的一个完整的数据库
 
  4. 数据库文件可以在不同字节顺序的机器间自由的共享
 
  5. 支持数据库大小至2TB

  6. 足够小, 大致3万行C代码, 250K

  7. 比一些流行的数据库在大部分普通数据库操作要快

  8. 简单, 轻松的API

  9. 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定

  10. 良好注释的源代码, 并且有着90%以上的测试覆盖率

  11. 独立: 没有额外依赖

  12. Source完全的Open, 你可以用于任何用途, 包括出售它

  13. 支持多种开发语言,C, Php, Perl, Java, asp .NET,Python

详细出处参考:http://www.ityoudao.com/Web/Csharp_590_1656.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值