開發一款 C# 本地化管理軟件,數據僅存儲在客戶端,無需聯網,且客戶電腦未安裝 SQL Server 等大型數據庫。需輕量、零配置、易部署的存儲方案。
| 方案 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| SQLite | 單文件、無需安裝、支持 SQL、ACID 事務、跨平台、性能優異 | 並發寫入性能較弱、大數據量下需優化 | 首選方案,適合多數桌面應用 |
| Microsoft Access (.mdb/.accdb) | Office 生態兼容、可視化設計、支持 SQL | 需安裝 Access Database Engine、文件易損壞、64位兼容性麻煩 | 需與 Office 互操作、非技術用戶自行查看數據 |
| XML / JSON 文件 | 零依賴、人類可讀、版本控制友好 | 無索引、查詢慢、大數據量內存壓力大、無事務 | 配置文件、極小數據集(<1萬條)、需人工編輯 |
| 純文本 / CSV | 最簡單、體積最小 | 無結構、解析麻煩、不支持複雜查詢 | 臨時導出、日誌記錄 |
sqlite3.dll(或完全託管版無需原生庫)。app.db 隨程序複製即可遷移。若數據極小且讀多寫少,可運行時載入內存,關閉時寫回文件,極致性能。
// 1. 安裝 NuGet: Microsoft.Data.Sqlite
// 2. 創建連接並建表
using var conn = new SqliteConnection("Data Source=app.db");
conn.Open();
var cmd = conn.CreateCommand();
cmd.CommandText = @"
CREATE TABLE IF NOT EXISTS Users (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
Name TEXT NOT NULL,
Email TEXT UNIQUE
)";
cmd.ExecuteNonQuery();
// 3. 增刪改查
cmd.CommandText = "INSERT INTO Users (Name, Email) VALUES ($name, $email)";
cmd.Parameters.AddWithValue("$name", "張三");
cmd.Parameters.AddWithValue("$email", "zhang@example.com");
cmd.ExecuteNonQuery();
C# 本地應用首選 SQLite,零配置、功能完備、生態成熟。數據極簡時可考慮 JSON 文件,避免引入數據庫依賴。