基於以上原因,開始研究也是屬於檔案型態的 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無邊、黑暗執行緒
沒有留言:
張貼留言