「博客搬家」 原地址: CSDN 原发表时间: 2016-09-25

本文目前用于 Visual Studio 2015 平台的 SQLite3 , 其他用法以后总结。

1. 使用 Nuget 添加 SQLite 库

在 Visual Studio 2015 中,选择:工具 -> NuGet 包管理器 -> 管理解决方案的 NuGet 程序包

NuGet 管理界面

在此界面下检索「SQLite」, 根据需要选择安装其中一个 SQLite 库,最好是红框部分内容中,二选一。

之后在界面的右侧,选择需要安装到的项目,之后进行安装操作即可。

2. 常用策略

2.1 对异常进行捕获

try
{
    //将对数据库进行操作的语句放置在try中
}
catch (Exception ex)
{
    //对异常进行处理
}

2.2 事务及 SQLite 代码框架

//使用以下语句配合具体的SQL操作语句即可
//注:不主动控制事务时,每次执行SQL指令即会重复开启新的事务,
//会在SQL操作方面花费大量的时间。所以在进行大量插入、修改操作
//时,主动开启事务会极大节省时间
var conn = new SQLiteConnection("Data Source = 
           ./bitkyData.db; Version = 3; ");
conn.Open();
var trans = conn.BeginTransaction(); //开启事务
var cmd = conn.CreateCommand();
try
{
    //通过操作cmd,使用具体的SQL操作语句
}
catch (Exception)
{
    trans.Rollback(); //事务回滚
    //进行具体的异常处理
}
trans.Commit();//事务提交
conn.Close();//连接关闭

3. 必备代码块

3.1 必要初始化操作

//指定数据库的地址,以及SQLite版本号
SQLiteConnection conn = new SQLiteConnection("Data Source = ./bitkyData.db; Version = 3; ");

3.2 向表中插入指定的条目

void insertData()
{
    conn.Open();
    var cmd = conn.CreateCommand();
    cmd.CommandText = "INSERT INTO ElectrodeController(typeA,typeB,typeM) VALUES (1, 2, 3)";
    cmd.ExecuteNonQuery();
    conn.Close();
}

3.3 设置查询的条件,查询指定条目的内容

static void selectData()
{
    conn.Open();
    var cmd = conn.CreateCommand();
    cmd.CommandText = "SELECT * FROM
    ElectrodeController where num > 45";
    var reader = cmd.ExecuteReader();//获取结果集
    if (reader.HasRows)
    {
        while (reader.Read())
        {
            Debug.WriteLine("ID: " + reader.GetInt32(0));
        }
    }
    conn.Close();
}

3.4 获取数据表中条目的数量

static void getCount()
{
    conn.Open();
    var cmd = conn.CreateCommand();
    cmd.CommandText = "SELECT COUNT(*) FROM ElectrodeController";
    var scalar = cmd.ExecuteScalar();\\获取结果集中第一行第一列的那个值
    Debug.WriteLine("count: " + Convert.ToInt32(scalar));
    conn.Close();
}

4. 参考资料

  1. C# 查询 SQL 数据库表里共有多少条记录的两种方法
  2. C# 获取 SQL 2005 表中的记录总数
  3. C# , SQLite 批量操作速度优化
  4. C# 操作 Dataset 数据集与 SQLite 数据库

bitkylin
161 声望13 粉丝

爱好技术、爱好开源、爱好分享。曾在 .NET、Android、Web 前端等领域搬砖,目前致力于 Java 后端工作与学习,靡不有初,鲜克有终。