SQLite 是一個輕量級的關系型數據庫,它不需要單獨的服務器進程或系統配置,并且支持 ACID 事務、視圖、觸發器和外鍵。由于其輕量級和跨平臺的特性,SQLite 經常在桌面應用程序、移動應用程序和嵌入式系統中使用。在 C# 中使用 SQLite,您可以輕松地創建數據庫、執行查詢、插入數據等。
搭建 SQLite 數據庫
在 C# 中使用 SQLite,您首先需要一個 SQLite 的 NuGet 包。您可以在 Visual Studio 的 NuGet 包管理器中搜索并安裝 System.Data.SQLite
或 Microsoft.Data.Sqlite
。
安裝完成后,您就可以開始使用 SQLite 了。以下是一個簡單的例子,展示如何在 C# 中創建一個 SQLite 數據庫:
using System.Data.SQLite;
class Program
{
static void Main()
{
string dbPath = "example.db"; // 數據庫文件路徑
// 創建一個新的 SQLite 連接
using (SQLiteConnection conn = new SQLiteConnection($"Data Source={dbPath};Version=3;"))
{
conn.Open();
// 創建一個新的 SQL 命令
using (SQLiteCommand cmd = conn.CreateCommand())
{
// 創建一個新表
cmd.CommandText = @"
CREATE TABLE IF NOT EXISTS Users (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
Name TEXT NOT NULL,
Email TEXT NOT NULL UNIQUE
)";
cmd.ExecuteNonQuery();
}
}
}
}
這段代碼創建了一個名為 example.db
的 SQLite 數據庫文件,并在其中創建了一個名為 Users
的表。
使用 SQLite 數據庫
一旦您有了數據庫和表,就可以開始執行查詢、插入數據等操作了。以下是一個簡單的例子,展示如何在 C# 中使用 SQLite:
using System.Data.SQLite;
class Program
{
static void Main()
{
string dbPath = "example.db"; // 數據庫文件路徑
// 創建一個新的 SQLite 連接
using (SQLiteConnection conn = new SQLiteConnection($"Data Source={dbPath};Version=3;"))
{
conn.Open();
// 創建一個新的 SQL 命令
using (SQLiteCommand cmd = conn.CreateCommand())
{
// 插入數據
cmd.CommandText = "INSERT INTO Users (Name, Email) VALUES (@name, @email)";
cmd.Parameters.AddWithValue("@name", "Alice");
cmd.Parameters.AddWithValue("@email", "alice@example.com");
cmd.ExecuteNonQuery();
// 查詢數據
cmd.CommandText = "SELECT * FROM Users";
using (SQLiteDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"ID: {reader.GetInt32(0)}, Name: {reader.GetString(1)}, Email: {reader.GetString(2)}");
}
}
}
}
}
}
這段代碼首先向 Users
表中插入了一條數據,然后查詢了表中的所有數據,并將結果打印到控制臺。
使用技巧
- 使用參數化查詢:如上例所示,使用參數化查詢可以防止 SQL 注入攻擊。
- 使用事務:如果您需要執行多個相關的數據庫操作,可以考慮將它們放在一個事務中,以確保數據的一致性。
- 使用 ORM:雖然 SQLite 本身是一個輕量級的數據庫,但您仍然可以使用 ORM(對象關系映射)工具,如 Entity Framework Core,來簡化數據庫操作。
- 性能優化:對于大型數據庫或高頻查詢,可以考慮使用索引、緩存等技術來優化性能。
- 錯誤處理:在數據庫操作中,經常會遇到各種錯誤,如連接失敗、查詢錯誤等。因此,建議您始終在代碼中添加適當的錯誤處理邏輯。
該文章在 2024/2/22 15:33:01 編輯過