C# SQLite 基礎教學 新增、修改、刪除、查詢 (CRUD) 程式範例

首先要先安裝讓我們可以讀取 SQLite 的套件:Microsoft.Data.Sqlite
操作步驟可以看這篇:安裝NuGet DLL套件
也可以安裝 SQLite 圖形化介面軟體方便開發時查看資料內容

文章最後面有完整程式碼和程式碼輸出內容

建立資料表:

先建立連接字串,我們預計會產生 db.db 這個 SQLite 檔案,如果沒有特別指定路徑,就會出現在專案資料夾下的 bin/Debug內
private string _connectionString = "Data Source=db.db;";
建立資料庫檔案並且建立一個 users 資料表
註1:執行到connection.Open();時如果沒有這個檔案就會自動建立db.db檔案
註2:File.Exists這行是判斷是否建立過檔案,可以避免每次啟動程式都會重複執行Create的SQL指令,只是如果要重新執行Create命令的話就要手動去把db.db檔案刪除
private void CreateDatabaseFile()
{
System.Diagnostics.Debug.WriteLine("CreateDatabaseFile");
if (File.Exists("db.db")) return;
using (var connection = new SqliteConnection(_connectionString))
{
connection.Open();

var command = connection.CreateCommand();
command.CommandText =
@"CREATE TABLE users (
id INTEGER,
user_name TEXT NOT NULL UNIQUE,
PRIMARY KEY(id AUTOINCREMENT)
);";
command.ExecuteNonQuery();
}
}

插入資料(新增) Insert:

這裡SQL語法不要用「拼接」的,例如:"values ('"+"Ruyut"+"')";
我們指定成$userName這個變數
後面用AddWithValue的方式來替換
並且在 SQL語法完成後還加了一行select last_insert_rowid();,用來取得新增資料的id
private void Insert(string userName)
{
System.Diagnostics.Debug.WriteLine("Insert");
using (var connection = new SqliteConnection(_connectionString))
{
connection.Open();
var command = connection.CreateCommand();
command.CommandText =
@" INSERT INTO users (user_name)
values ($userName);
select last_insert_rowid();";
command.Parameters.AddWithValue("$userName", userName);
int id = Convert.ToInt32((object)command.ExecuteScalar());
System.Diagnostics.Debug.WriteLine($"\tid = {id}, userName = {userName}");
}
}

查詢、讀取 Select:

這裡我偷懶一下直接讀取整個Table的資料
private void Read()
{
System.Diagnostics.Debug.WriteLine("Read");
using (var connection = new SqliteConnection(_connectionString))
{
connection.Open();
var command = connection.CreateCommand();
command.CommandText = @" select * from users";

using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
var id = reader.GetString(0);
var name = reader.GetString(1);

System.Diagnostics.Debug.WriteLine($"\tid = {id}, name = {name}");
}
}
}
}

修改 Update:

修改要先找到該筆資料的id
private void Update(int id, string userName)
{
System.Diagnostics.Debug.WriteLine("Update");
using (var connection = new SqliteConnection(_connectionString))
{
connection.Open();
var command = connection.CreateCommand();
command.CommandText =
@" UPDATE users
SET user_name= $userName
WHERE id = $id;";
command.Parameters.AddWithValue("$userName", userName);
command.Parameters.AddWithValue("id", id);
command.ExecuteNonQuery();
}
}

刪除 Delete:

private void Delete(int id)
{
System.Diagnostics.Debug.WriteLine("Delete");
using (var connection = new SqliteConnection(_connectionString))
{
connection.Open();
var command = connection.CreateCommand();
command.CommandText =
@" delete from users where id = $id;";
command.Parameters.AddWithValue("id", id);
command.ExecuteNonQuery();
}
}

完整程式碼:


範例輸出:

Insert
id = 1, userName = Ruyut
Read
id = 1, name = Ruyut
Update
Read
id = 1, name = Ruyut_1234
Delete
Read

留言