在不能知道库中某个表的名称 时
如何得到数据库里所有表的名称??

解决方案 »

  1.   

    var
     
      SL:=Tstringlist.Create;
       try
          adoconnection1.GetTableNames(SL,false);
       except
          raise Exception.Create('装载源库列表错误!错误特征码2003');
       end;
       TableExist:=false;
       for index := 0 to (SL.Count - 1) do
       begin
       //Export  Table
       if  SL[index]=databasename then
       begin
          TableExist:=true;
          break;
       end;
       end;
       SL.free ;
       if tableexist=false  then    //数据表不存在,则创建。
      

  2.   

    对不起, 上面还没有写完
    procedure TMainForm.FormCreate(Sender: TObject);
    var
      SL:Tstringlist;
      TableExist:boolean;
      index:integer;
    begin
      SL := ......  //接上面
      

  3.   

    Select * From SysObjects Where xType In ('U')
      

  4.   

    晕啊  这个GetTableNames  估计是自定义的函数吧????
    把他的代码给出来啊
      

  5.   

    用原生 ADO 来解决非常简单请参考以下文章及其相关文章: 
     
        只用ado列出所有的表 
        http://access911.net/?kbid;72FAB71E14DC 
     上述是 VB 代码,你可以参考一下,用 DELPHI 解决
      

  6.   

    关于此主题请参考:
        《表》怎样使用一个查询获得数据库对象的名称(查询/窗体/表/报表/模块/宏)?查...
        http://access911.net/index.asp?u1=a&u2=71FAB71E12DC
      

  7.   

    实例在 http://access911.net/csdn/FileDescription.asp?mdb=2005-10-19&id=15&mode=3下载unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Memo1: TMemo;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementationuses ComObj;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      conn:OleVariant;
      rs:OleVariant;
      i:integer;
    begin
      conn:=CreateOleObject('adodb.connection');
      rs:=CreateOleObject('adodb.recordset');
      conn.open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + ExtractFilePath(ParamStr(0)) + '\test.mdb;User ID=admin;Password=;Jet OLEDB:Database Password=');
      rs:=conn.OpenSchema(20);    //adSchemaTables 这里是列出表,还有很多很多参数,可以做很多很多事情,请参考 MSDN
      // 列出所有表,包括系统表和用户表
      repeat
        for i:=0 to rs.fields.count-1 do
          begin
            if VarIsNull(rs.fields.item[i].value)=true then
              begin
                self.Memo1.lines.Add( rs.fields.item[i].name + '->' );
              end
            else
              self.Memo1.lines.add(rs.fields.item[i].name + '->' + VarToStr(rs.fields.item[i].value));      end;
          self.Memo1.Lines.Add('--------');
          rs.movenext;
      until rs.eof=true;
      rs.close;
      conn.close;
      conn:= Unassigned;
      rs:=Unassigned;end;end.