使用命名空间

CS
using Microsoft.Data.Sqlite;
点击展开查看更多

创建连接

CS
SqliteConnection dbc = new("Data Source=:memory:"); // 内存模式
SqliteConnection dbc = new("Data Source=/path/to/xxx.db");
dbc.Open(); // 异步方式:dbc.OpenAsync();
if (dbc.State == System.Data.ConnectionState.Open) {
	//...
}
点击展开查看更多

创建SQL指令

普通指令

CS
SqliteCommand cmd = new("SELECT * FROM Users;", dbc);
点击展开查看更多

带参数指令

CS
// 创建指令
SqliteCommand cmd = new("INSERT INTO Users VALUES (@Name, @Age);", dbc);
// 定义参数
cmd.Parameters.Add(new SqliteParameter("@Name", typeof(string)));
cmd.Parameters.Add(new SqliteParameter("@Age", typeof(int)));
// 可随时更改参数值
cmd.Parameters["@Name"].Value = "蔡徐坤";
cmd.Parameters["@Age"].Value = 25;
点击展开查看更多

执行SQL指令

ExecuteReader

用于执行返回多行结果的查询语句(如 SELECT 语句)。

CS
/* SELECT * FROM Voices; */
SqliteDataReader reader = await cmd.ExecuteReaderAsync();
await reader.ReadAsync();
while (await reader.ReadAsync()) {
	// 处理每一行数据
	string result = reader.GetString(0); // 取第一列
	// ...
}
点击展开查看更多

ExecuteScalar

用于执行返回单个值的查询,通常是一个聚合函数的结果,如COUNT(), SUM(), MAX(), MIN()等,或者是只返回一行一列的查询。

CS
/* SELECT COUNT(*) FROM Voices; */
object result = await cmd.ExecuteScalarAsync(); // 失败返回null
int count = Convert.ToInt32(result);
点击展开查看更多

ExecuteNonQuery

用于执行不返回任何数据的命令,如INSERT, UPDATE, DELETE以及创建或修改数据库结构的 CREATE TABLE, ALTER TABLE 等DDL语句。

CS
/* INSERT INTO Users VALUES (@Name, @Age); */
int 影响了行数据 = await cmd.ExecuteNonQueryAsync();
点击展开查看更多

版权声明

作者: Chaim

链接: https://chaim.eu.org/posts/sqlite/

许可证: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Please attribute the source, use non-commercially, and maintain the same license.

开始搜索

输入关键词搜索文章内容

↑↓
ESC
⌘K 快捷键