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

Sqlite 在多用户环境中打开和关闭数据库连接,sqlite,delphi,firedac,Sqlite,Delphi,Firedac,这是一个多用户应用程序,多线程,各个部门将访问自己的数据库。数据库是SQLite,我使用FireDac。对于每个部门,我都分配了一个单独的ADConnection,因此我不会得到任何意外的锁 激活哪个连接完全取决于ADQuery3生成的号码。这是在mainformshow上完成的,因为它需要在成功登录后以这种方式显示。我希望能够关闭FormClose上的每个连接,但当多用户使用同一个数据库并登录和注销时,我遇到了一些不好的问题。因此,我想问一下,这是我正在执行的正确编程逻辑,还是可以用更好的方式

这是一个多用户应用程序,多线程,各个部门将访问自己的数据库。数据库是SQLite,我使用FireDac。对于每个部门,我都分配了一个单独的ADConnection,因此我不会得到任何意外的锁

激活哪个连接完全取决于ADQuery3生成的号码。这是在mainformshow上完成的,因为它需要在成功登录后以这种方式显示。我希望能够关闭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;

结束

你遇到的这些坏问题是什么?这种关于if-then-else的问题以及提到的多线程让我不寒而栗……你对异常处理有什么想法?显示消息?只需删除整个try..except,您将得到一条消息…SQlite和直接连接到数据库文件的多用户不匹配。1 SQlite不适用于多用户2您不应该从远程位置打开SQlite数据库文件下一个文件出现在哪里请着手学习Delphi教程,并学习如何开始、结束和如果……那么……否则,在编写“多用户”和“多线程”代码之前先进行工作。如果您想避免不好的问题,强烈建议您这样做。。。