Visual studio C#中通过nuget安装sqlite库及C#中sliqte的用法

以前在Visual studio 的2017版中讲过如何使用sqlite,这里我们再次说说如何使用sqlite,以前Nuget使用还不是很流行很普及,大多数人不知道,但随着VS的升级,Nuget成为安装插件或者引用库文件标准的获取手段,所以这里我们用nuget来安装sqlite。


文章原出处: https://blog.csdn.net/haigear/article/details/130022415

一、库文件的准备

在这里插入图片描述
接下来,也要安装system.data.sqlite,否则也还是找不到运行sqlite的必须的名称空间和库文件。
在这里插入图片描述
通过nuget安装好上面的库后,我们的sqlite在C#中就可以顺利的使用了。

二、sqlite的使用方法

1、基础的使用方法

任何数据库的使用方法基本都一样,只不过是连接的字符串格式会不太一样,比如sql server,mysql都会有其连接的服务器地址,即使是本地安装的数据库都必须给出服务器地址。但sqlite不一样,她不需要服务器。所以可以直接像连接access的mdb文件一样连接。

我们来看一个典型的两段代码,一个是读取记录的代码,一个是添加记录的代码:

//读取记录代码 
void loadSqliteRecord(int x=0)
{
//设置连接字符串
string constr = "Data Source=../data/MyDataBase.db;";
//设置SQL查询语句
string sql = "select * from TestTab";
//创建连接对象
SQLiteConnection con = new SQLiteConnection(constr);
//创建命令对象
SQLiteCommand cmd = new SQLiteCommand(sql, con);
con.Open();
SQLiteDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
while (reader.Read())
//向下拉框中添加登录名列表
comboBox1.Items.Add(reader.GetString(x));
con.Close();
cmd = null;
con.Dispose();
}

//添加记录代码
void insertSqliteRecord(string id)
{
Random ra = new Random(20);//这个随机数不是数据库调用的必要语句
string constr = "Data Source=../data/MyDataBase.db;";
//设置SQL查询语句
string sql = "insert into TestTab(id,name,age) values('"+id+"','student0"+ id.TrimStart("stu".ToCharArray())+"','"+ra.Next(16,20)+"')";
//创建连接对象
SQLiteConnection con = new SQLiteConnection(constr);
//创建命令对象
SQLiteCommand cmd = new SQLiteCommand(sql, con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
cmd = null;
con.Dispose();

通过以上的代码,我们中知道,操作数据库之前,必须要先建立连接,依靠SQLiteConnection 对象建立连接。都依靠SQLiteCommand 对象来执行sql查询语句,无论是增删改查中的哪一种。

2、关键对象SQLiteCommand 的说明

SQLiteConnection 无非就是提供一个连接对象,可供后续的操作,这里就没有必要深究了,用就是了。但这里要说明一下SQLiteCommand 对象,因为一些关键的直接与数据打交道的操作都是与他分不开。

1、SQLiteCommand 提供的ExecuteReader方法可以返回一个SQLiteDataReader 对象,以供查询数据。
3、SQLiteCommand 提供的ExecuteNonQuery方法,直接执行一些无须返回查询结果的sql语句,比如增删改。

有了以上两种方法基本就全了,常规的所有操作(增删改查)都可以顺利的完成了。

三、为sqlite编辑辅助类

我们不能每次需要对数据进行操作的时候,来一次临时的数据连接,然后写一大堆的准备代码,实际,操作起来,对于增删改查来说,就是sql语句不同,所以我们完全可以自己编写一个辅助静态类,直接调用,将sql语句需要的具体内容以参数的形式传入即可得到我们需要的结果。
以下是代码实现:

1、SqliteAssist类的实现

using System.Data.SQLite;

public class SqliteAssist
{
    private readonly string connectionString;

    public SqliteAssist(string dbPath)
    {
        // 设置SQLite连接字符串
        connectionString = $"Data Source={dbPath};Version=3;";
    }

    // 执行查询并返回结果集
    public SQLiteDataReader getQueryReader(string query)
    {
        SQLiteConnection connection = new SQLiteConnection(connectionString);
        SQLiteCommand command = new SQLiteCommand(query, connection);
        connection.Open();
        SQLiteDataReader reader = command.ExecuteReader();
        return reader;
    }

    // 执行非查询语句,如INSERT、UPDATE、DELETE等
    public int recordChange(string query)
    {
        SQLiteConnection connection = new SQLiteConnection(connectionString);
        SQLiteCommand command = new SQLiteCommand(query, connection);
        connection.Open();
        int result = command.ExecuteNonQuery();
        return result;
    }

    // 执行查询并返回单个值
    public object getChangeCount(string query)
    {
        SQLiteConnection connection = new SQLiteConnection(connectionString);
        SQLiteCommand command = new SQLiteCommand(query, connection);
        connection.Open();
        object result = command.ExecuteScalar();
        return result;
    }
}

2、sqliteAssist调用

string dbPath = "mytest.db";
sqliteAssist sa= new sqliteAssist(dbPath);

// 查询操作,我们这里通过getQueryReader获取了一个SQLiteDataReader
SQLiteDataReader reader = sqliteHelper.getQueryReader("SELECT * FROM users");
while (reader.Read())
{
    Console.WriteLine($"ID: {reader["id"]}, Name: {reader["name"]}");
}

// 插入一条记录(这里的recordChange中的参数可以是增删改三种操作的任意一个)
int affectedRows = sqliteHelper.recordChange("INSERT INTO users (name) VALUES ('John')");
Console.WriteLine($"Rows affected: {affectedRows}");

// 返回所更新记录的个数
object count = sqliteHelper.getChangeCount("SELECT COUNT(*) FROM users");
Console.WriteLine($"Count: {count}");

当然,你可以根据你的实际业务需求去为你的sqliteAssist类增添更多的适用快捷的函数,这里只是举例而已,没有更多的实际业务领域。

文章随时可能更新,转载请注明文章原出处:文章原出处:https://blog.csdn.net/haigear/article/details/130022415

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河西石头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值