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

猜你喜欢

转载自blog.csdn.net/haigear/article/details/130022415