我如何能得到数据库中表名的列表,在ComboBox中,orcale,sqlserver 2000
最好有原码!!!谢谢!!!

解决方案 »

  1.   

    从数据库的系统表中查询, oracle,sqlserver可能不相同,......
      

  2.   


    第一种 用ADOConnection组件
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
      ADOConnection1.GetTableNames(ListBox1.Items,false)//改为true则包括系统表
    end;第二种  用SQL语句
     SELECT name FROM sysobjects WHERE xtype = 'u'
      

  3.   

    我试了,只能在sqlserver中用,oracle有表空间,不能这么用,提示错误
      

  4.   

    那就用ADOConnection组件好了,它不管什么数据库,只要能连接上就可以GetTableNames取全部表名
      

  5.   

    但是用getTableNames好像连视图也取出来了,怎么区分表和视图呢?
      

  6.   

    我也出现了这个问题
    我在方案xxx中建立表AAA,但我用ADOConnection1.GetTableNames(ListBox1.Items,false)调出了很多表名,其中有视图
    那位大虾帮忙解决一下
      

  7.   

    楼主:
       我用了DATASET获取了表名:    strtempsql:='select table_name from all_tables where owner=''';
        strtempsql:=strtempsql+uppercase(edtUserName.Text)+'''';
        with adoQuery do
        begin
          SQL.Clear;
          SQL.Add(strtempsql);
          Open;
        end;
        DataSource.DataSet:=adoQuery;
        DataSet:=DataSource.DataSet;
        while not DataSet.Eof do
        begin
          lsbTablesName.Items.Add(dataset.Fields[0].text);
          dataset.Next;
        end;
      

  8.   

    combobox1.clear; 
    ADOcheck.SQL.clear;  
    ADOcheck.SQL.Add('select name from [sysdatabases] ');
    ADOcheck.open;
    repeat
    combobox1.item.add(ADOcheck.fields[0].tostring);
    combobox1.next;
    until ADOcheck.eof; [sysdatabases]是SQLSERVER2000中保存表名的表,在master里