如何遍历access或者sql数据库下的所有表?所有表的字段?
最好给个例子,感激不尽.

解决方案 »

  1.   

    //----------Sql中SqlConnection cn = null;
    private void Page_Load(object sender, System.EventArgs e)
    {
    if(!IsPostBack)
    {
    BinderTables();
    }
    }
    private void BinderTables()
    {
    ListBox1.DataSource = ExecuteDataReader();
    ListBox1.DataTextField = "table_name";
    ListBox1.DataValueField = "table_name";
    ListBox1.DataBind();

    }
    private SqlConnection GetConnection ()
    {
    cn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"].ToString());
    cn.Open();
    return cn;
    }
    private void CloseConnection()
    {
    if(cn!=null)cn.Close();
    }
    private SqlDataReader ExecuteDataReader()
    {
    SqlDataReader reader = null;
    SqlCommand sqlcm = new SqlCommand("sp_tables",GetConnection());
    sqlcm.CommandType = CommandType.StoredProcedure;
    reader = sqlcm.ExecuteReader();
    return reader;
    }
    private SqlDataReader ExecuteDataReader(string tbname)
    {
    SqlDataReader reader = null;
    SqlCommand sqlcm = new SqlCommand("sp_columns",GetConnection());
    sqlcm.CommandType = CommandType.StoredProcedure;
    sqlcm.Parameters.Add("@table_name",SqlDbType.NVarChar);
    sqlcm.Parameters[0].Value = tbname;
    reader = sqlcm.ExecuteReader();
    return reader;
    }private void ListBox1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    string tbname = ListBox1.SelectedValue;

    ListBox2.DataSource = ExecuteDataReader(tbname);
    ListBox2.DataTextField = "COLUMN_NAME";
    ListBox2.DataValueField = "COLUMN_NAME";
    ListBox2.DataBind();
    }