在多用户环境中打开和关闭数据库连接

时间:2014-06-28 03:05:38

标签: sqlite delphi firedac

这是一个多用户应用程序(多线程),各个部门将访问自己的数据库。数据库是SQLite,我正在使用FireDac。对于每个部门,我已经分配了一个单独的ADConnection,所以我没有得到任何意外的锁。

将激活哪个连接(活动)仅取决于ADQuery3生成的数量。这是在MainForm Show上完成的,因为它需要这样(在成功登录后显示)。我希望能够关闭FormClose上的每个连接,但是当多用户使用相同的数据库并登录和退出时,我遇到了一些不好的问题。所以我想问一下这是否是正确的编程逻辑我或者这可能以更好的方式完成?

此外,我从未使用过这么多的开头,我想知道如何继续这个?

我的意思是当我需要检查另一个部门的数量是否出现时,比如 如果DataModule1.ADQuery3.FieldByName('DEPARTMENT')。AsString ='12'下一个ELSE出现在哪里?

procedure TMainForm.FormShow(Sender: TObject);
begin
if DataModule1.ADQuery3.FieldByName('DEPARTMENT').AsString = '13'
then begin
try
  if DataModule1.1_CONNECTION.Connected = true then
    DataModule1.1_CONNECTION.Connected := False
  else
    DataModule1.1_CONNECTION.DriverName:= 'SQLite';

  DataModule1.1_CONNECTION.Params.Values['Database']:= ExtractFilePath(Application.ExeName)+ 'mydatabase.db';
  DataModule1.1_CONNECTION.Connected := true;
  DataModule1.ADTable1.TableName :='DEPT_13';
  DataModule1.DEPT_13.Active:=True;
  cxGrid1.ActiveLevel.GridView := DEPT_13;
except
  on E: Exception do  begin
    ShowMessage('There was an error... : ' + E.Message);
  end;
end;

端;

0 个答案:

没有答案