Delphi在C/S架构项目中考虑到SQLServer客户端断电的用户登录问题

来源:互联网 发布:软件开发验收标准 编辑:程序博客网 时间:2024/06/06 09:49
在C/S架构项目中,往往限制同一时间一个账号只能登录一次,考虑到客户端突然断电的情况。
登录前要验证临时表是否存在,登录后要创建临时表。
// 注册已经登录的账户function TfrmLogin.RegUserLogined(AdoConn: TADOConnection;  AUserID: string): Boolean;var  Qry: TADOQuery;  SQLStr: string;begin  //  try    QryCreate(Qry,AdoConn);    try      SQLStr := Format('CREATE TABLE ##XXX%s(%s INT); ', [AUserID, AUserID]);      Qry.SQL.Text := SQLStr;      Qry.ExecSQL;    finally      Qry.Free;    end;  except    Result := False;    Exit;  end;  Result := True;end;// 判断账户是否已经登录function TfrmLogin.ThisUserHadLogined(AdoConn: TADOConnection;  AUserID: string): Boolean;var  Qry: TADOQuery;  SQLStr: string;begin  //  try    QryCreate(Qry,AdoConn);    try      SQLStr := Format('SELECT OBJECT_ID(N''tempdb..##XXX%s'', N''U'') AS TabID', [AUserID]);      Qry.SQL.Text := SQLStr;      Qry.Open;      result := not Qry.FieldByName('TabID').IsNull;    finally      Qry.Free;    end;  except    Result := False;    Exit;  end;end;procedure TfrmLogin.QryCreate(var aQuery: TADOQuery; Connecion: TAdoConnection);begin  aQuery := TADOQuery.create(nil);  aQuery.Connection := Connecion;end;