首先要先安裝讓我們可以讀取 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
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com