以前在Visual studio 的2017版中讲过如何使用sqlite,这里我们再次说说如何使用sqlite,以前Nuget使用还不是很流行很普及,大多数人不知道,但随着VS的升级,Nuget成为安装插件或者引用库文件标准的获取手段,所以这里我们用nuget来安装sqlite。
文章目录
- 一、库文件的准备
- 二、sqlite的使用方法
- 1、基础的使用方法
- 2、关键对象SQLiteCommand 的说明
- 三、为sqlite编辑辅助类
- 1、SqliteAssist类的实现
- 2、sqliteAssist调用
文章原出处: 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