如何使用c#将访问数据库的表放入列表框?

0 c#

我需要创建一个表单,我可以浏览和打开mdb文件--->我使用oprnfile对话做了这个部分!

private void button1_Click(object sender, EventArgs e)

{

OpenFileDialog oDlg = new OpenFileDialog();

oDlg.Title = "Select MDB";

oDlg.Filter = "MDB (*.Mdb)|*.mdb";

oDlg.RestoreDirectory = true;

string dir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

oDlg.InitialDirectory = dir;

DialogResult result = oDlg.ShowDialog();

if (result == DialogResult.OK)

{

textBox1.Text = oDlg.FileName.ToString();

}

}
Run Code Online (Sandbox Code Playgroud)

**这是我的代码到目前为止!!!

现在我需要制作3个列表框!! 第一个显示db的表名!单击表名时显示字段名称的第2个!!! 第三个在点击它时显示fiels上的属性!v可以编辑属性值,点击保存按钮就可以更新数据库!

Tes*_*101 5

本课程应该为您提供所需的信息.

public static class DatabaseInfoCollector
    {       
        public static System.Collections.Generic.List<string> GetTables(string file)
        {
            System.Data.DataTable tables;
            using(System.Data.OleDb.OleDbConnection connection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file))
            {
                connection.Open();
                tables = connection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,new object[]{null,null,null,"TABLE"});
            }
            System.Collections.Generic.List<string> Tables = new System.Collections.Generic.List<string>();
            for (int i = 0; i < tables.Rows.Count; i++)
            {
                Tables.Add(tables.Rows[i][2].ToString());
            }
            return Tables;
        }       

        public static System.Collections.Generic.List<string> GetColumnNames(string file, string table)
        {
            System.Data.DataTable dataSet = new System.Data.DataTable();            
            using(System.Data.OleDb.OleDbConnection connection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file))
            {
                connection.Open();
                System.Data.OleDb.OleDbCommand Command = new System.Data.OleDb.OleDbCommand("SELECT * FROM " + table,connection);
                using(System.Data.OleDb.OleDbDataAdapter dataAdapter = new System.Data.OleDb.OleDbDataAdapter(Command))
                {
                    dataAdapter.Fill(dataSet);
                }
            }
            System.Collections.Generic.List<string> columns = new System.Collections.Generic.List<string>();
            for(int i = 0; i < dataSet.Columns.Count; i ++)
            {
                columns.Add(dataSet.Columns[i].ColumnName);
            }
            return columns;
        }
    }
Run Code Online (Sandbox Code Playgroud)

像这样填写表格列表.

System.Collections.Generic.List<string> Tables = DatabaseInfoCollector.GetTables(textBox1.Text);
foreach(string table in Tables)
{
     cboTable.Items.Add(table);
}
Run Code Online (Sandbox Code Playgroud)

像这样填充列.

System.Collections.Generic.List<string> Columns = DatabaseInfoCollector.GetColumnNames(textBox1.Text,cboTable.SelectedItem.ToString());
foreach(string column in Columns)
{
     cboColumns.Items.Add(column);
}
Run Code Online (Sandbox Code Playgroud)

您还可以使用此方法返回包含有关每列的各种信息的DataTable.

public static System.Data.DataTable GetSchemaData(string file)
{
    System.Data.DataTable columns;
    using(System.Data.OleDb.OleDbConnection connection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file))
    {
        connection.Open();
        columns = connection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Columns,new object[]{null,null,null,null});
    }
    return columns;
}
Run Code Online (Sandbox Code Playgroud)