自己做的一个程序,因为客户那里数据源不一定,可能是文本,access,SQLserver等等数据源,所以可以自己配置数据源,比如我获得数据连接字符串这样的:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\test\My Documents\db1.mdb;Persist Security Info=False
但是数据库里表名也是未知的,各个客户的不一样,表的字段也不知道,我如何在程序里为其提供一个类似.net开发环境中中那样连接数据源后可以显示该数据库中的表和字段,任意选择需要哪一个表和其中字段的那种界面呢?请大家帮帮我,谢谢了!

解决方案 »

  1.   

    Access
    private void button1_Click(object sender, System.EventArgs e)
    {
    System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection
           (@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\db1.mdb;Persist Security Info=False");
    conn.Open();
    DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, 
                                                     new object[] {null, null, null, "TABLE"});
    this.listBox1.Items.Clear();
    for(int i = 0 ; i < schemaTable.Rows.Count ; i ++)
    {
    this.listBox1.Items.Add(schemaTable.Rows[i]["Table_Name"].ToString());
    }
    // 也可以在dataGrid1中看看schemaTable的结构
    this.dataGrid1.DataSource = schemaTable;
    }
    SQL Server
    SELECT name FROM master.dbo.sysdatabases WHERE name NOT IN('master','tempdb','madb',model')
    执行这个SQL语句,就可以取得用户表 
      

  2.   

    感谢楼上的答复!确实可以解决问题,但是有一点,就是感觉扩展困难,因为我还有文本做数据源、Excel的、Orcal的、Sysbase的、FoxPro的数据源,甚至IBM DB2的数据库,那样是不是很难判断啊?
    数据源的配置界面有dll可以调用,不知道显示视图和表的字段有没有视图可以调用?谢谢了!
      

  3.   

    先结贴感谢yuqi508(毛路) ,再发帖问如何调现有DLL