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

在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;




你可能感兴趣的:(String,function,object,服务器,sqlserver,Delphi)