这是一个多用户应用程序(多线程),各个部门将访问他们自己的数据库。数据库是 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;
结尾;