基於以上原因,開始研究也是屬於檔案型態的 SQLite,它的寫法跟 ADO.NET 很像,所以很好上手,而此次目的很簡單,只是想將寫 Log 的方式改變一下而已,所以沒有深入研究,以下只是入門款的記錄。
先使用 NuGet 安裝 System.Data.SQLite.Core。
請注意寫日期到 Log 時的方式:
using (SQLiteConnection conn = new SQLiteConnection())
{
// 指定SQLite檔案的路徑和檔名
conn.ConnectionString = "data source=D:\\Log\\Log.sqlite";
conn.Open();
// Create Table
SQLiteCommand cmd = conn.CreateCommand();
cmd.CommandText = @"Create Table Log (
LogID INTEGER PRIMARY KEY,
Message TEXT,
CreateDate DATETIME
)";
cmd.ExecuteNonQuery();
// 寫Log。
// 使用SQLite內建的datetime('now')時,需加8小時(480分)才會是台灣時間
cmd.CommandText = @"Insert into Log (Message,CreateDate) values (@Message, datetime('now', '+480 minutes'))";
cmd.Parameters.Clear();
cmd.Parameters.Add(new SQLiteParameter("Message", strMessage));
cmd.ExecuteNonQuery();
// 寫Log,
// 使用C#的DateTime.Now時,一定要使用SQLite Parameter,如果用字串相加的方式,Insert時不會有問題,但Select時就會因日期格式不符而讀取失敗
cmd.CommandText = @"Insert into Log (Message,CreateDate) values (@Message, @Now)";
cmd.Parameters.Clear();
cmd.Parameters.Add(new SQLiteParameter("Message", strMessage));
cmd.Parameters.Add(new SQLiteParameter("Now", DateTime.Now)); // 這裡不用再加8小時,雖然存入會少8小時,但C#讀出時會自動加8小時
cmd.ExecuteNonQuery();
}
可以安裝 DB Browser for SQLite 來開啟 SQLite 檔案觀看內容。
已經將SQLite常用語法打包成 SQLiteLib,用法跟 DBLib 一樣,需要者請自行取用。
參考來源:Log有訊,Bug無邊、黑暗執行緒

沒有留言:
張貼留言