線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1493
推到 Plurk!
推到 Facebook!

二個Thread如何避免Lock(SQLite)

缺席
blue
中階會員


發表:113
回覆:99
積分:52
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-11-07 17:22:44 IP:122.146.xxx.xxx 訂閱
Hi,各位先進大家好:
因程式使用二個Thread處理資料
二Thread均會對SQLite進行存取,
因而會造成DB Lock,
請教,該如何解決?
謝謝!
function InsertSynced(FileName: String; Size: Int64; MydifyDate: String; Status: String): Boolean;
var
dbxConn: TDBXConnection;
dbxCommand: TDBXCommand;
dbxTransaction: TDBXTransaction;
begin
Result := True;
try
try
SQLConnection1.Connected := True;
dbxConn := SQLConnection1.DBXConnection;
dbxCommand := dbxConn.CreateCommand;
dbxTransaction := dbxConn.BeginTransaction(1);
dbxCommand.Text := Format('INSERT OR REPLACE INTO Synced(FileName, Size, ModifyDate, Status) VALUES ("%s", %d, "%s", "%s")', [FileName, Size, MydifyDate, Status]);
dbxCommand.ExecuteQuery;
except
Result := False;
end;
finally
dbxConn.CommitFreeAndNil(dbxTransaction);
FreeAndNil (dbxCommand);
SQLConnection1.Connected := False;
end;
end;
blue
中階會員


發表:113
回覆:99
積分:52
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2013-12-17 17:15:48 IP:122.146.xxx.xxx 訂閱
已解:
方法一:增一Global變數 gLock,自行設定及判斷目前是否已有程序在處理資料庫,缺點是到這裡變成單工
方法二:改用FireDAC,可以使用Share mode
謝謝!


===================引 用 blue 文 章===================
Hi,各位先進大家好:
因程式使用二個Thread處理資料
二Thread均會對SQLite進行存取,
因而會造成DB Lock,
請教,該如何解決?
謝謝!
function InsertSynced(FileName: String; Size: Int64; MydifyDate: String; Status: String): Boolean;
var
dbxConn: TDBXConnection;
dbxCommand: TDBXCommand;
dbxTransaction: TDBXTransaction;
begin
Result := True;
try
try
SQLConnection1.Connected := True;
dbxConn := SQLConnection1.DBXConnection;
dbxCommand := dbxConn.CreateCommand;
dbxTransaction := dbxConn.BeginTransaction(1);
dbxCommand.Text := Format('INSERT OR REPLACE INTO Synced(FileName, Size, ModifyDate, Status) VALUES ("%s", %d, "%s", "%s")', [FileName, Size, MydifyDate, Status]);
dbxCommand.ExecuteQuery;
except
Result := False;
end;
finally
dbxConn.CommitFreeAndNil(dbxTransaction);
FreeAndNil (dbxCommand);
SQLConnection1.Connected := False;
end;
end;
系統時間:2017-10-23 5:10:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!