我用ado连接数据库,怎么取得所联数据库中table的个数,好像没有直接的属性吧??
试过先取得adoconnection的tableNames,然后计算里面的name个数,不成功阿

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      SL: TStrings;
    begin
      SL := TStringList.Create;
      try
        ADOConnection1.GetTableNames(SL, False);
        ShowMessage(IntToStr(SL.Count));
      finally
        SL.Free;
      end;end;
      

  2.   

    procedure TForm1.Button2Click(Sender: TObject);
    begin
      with Adoquery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select count(1) from sysobjects ');
        Open;
        ShowMessage(IntToStr(Fields[0].AsInteger));
        Close;
      end;
    end;
      

  3.   

    procedure TForm1.Button2Click(Sender: TObject);
    begin
      with Adoquery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select count(1) from sysobjects where type=''u''');
        Open;
        ShowMessage(IntToStr(Fields[0].AsInteger));
        Close;
      end;
    end;
      

  4.   

    回复人: liufuyahong()  的这种方法不错procedure TForm1.Button2Click(Sender: TObject);
    begin
      with Adoquery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select count(1) from sysobjects where type=''u''');
        Open;
        ShowMessage(IntToStr(Fields[0].AsInteger));
        Close;
      end;
    end;
      

  5.   

    select count(1) from sysobjects where type='u'
    PS:
    TYPE=‘U’是指用户创建的表
      

  6.   

    如果用的不是sql server呢?
    procedure TForm1.FormCreate(Sender: TObject);
    var
      tl:Tstrings;
    begin
      self.ADOConnection1.GetTableNames(tl);
      showmessage(inttostr(tl.Count));
    end;