SQLite是我非常喜歡的一個小型數據庫。如果你真把它當SQL Server、Oracle來使用的話,那簡直是災難,讀寫效率帶來的死鎖問題夠你受的。
不過,如果把整個數據庫加載到內存中呢?哈哈,那簡直是爽翻了。不過,寫入怎麼解決呢?
你的程序不知道什麼時候會退出,一旦退出,數據還未保存的話,哭吧。。。。
其實,向數據庫中寫入數據的頻率是非常低的,而讀取數據的頻率卻很高。
且看我的更新方法:
1、把數據庫加載到內存
2、每次需要讀取數據的時候,直接從內存中讀取。
3、每次寫入數據的時候,先寫內存,然後把那條SQL語句再磁盤上的數據庫上執行一下。
4、如果向內存數據庫寫入都失敗,怎麼辦?很簡單,那就用不着更新磁盤上的數據庫啦。
有時候,執行的並不是一條簡單的SQL語句,而是加了參數的語句,那麼這裏還需要對參數進行處理。處理的代碼如下:
public static void SQLiteFileDatabseExecute(SQLiteCommand command)
{
SQLiteConnection sQLiteConnection = new SQLiteConnection(SQLiteConnectionString);
SQLiteCommand sQLiteCommand = new SQLiteCommand("", sQLiteConnection);
try
{
sQLiteConnection.Open();
sQLiteCommand.CommandText = command.CommandText;
foreach (SQLiteParameter sQLiteParameter in command.Parameters)
{
sQLiteCommand.Parameters.Add(sQLiteParameter);
}
sQLiteCommand.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
sQLiteConnection.Close();
}
}
讀,從內存中加載的數據庫中讀取
寫,先寫內存數據庫,然後在磁盤上的數據庫中執行同樣的SQL語句。
OK。先寫到這裏。如果你有疑問,歡迎留言。