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

时间:2009-08-07 05:35:55

标签: 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();

}

}

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

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

3 个答案:

答案 0 :(得分: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;
        }
    }

像这样填写表格列表。

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

像这样填充列。

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

您还可以使用此方法返回包含有关每列的各种信息的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;
}

答案 1 :(得分:0)

使用System.Data.OleDb.*类从访问文件中获取数据。

示例:

//Create the OleDbConnection object 
//and associate it with our database
using(OleDbConnection conn = new OleDbConnection(
    "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source="+textBox1.Text)){

//Open the database connection
conn.Open();

//Create an OleDbCommand object and
//pass it the SQL read query and the connection to use
OleDbCommand cmd = new OleDbCommand(sqlstr,conn);

//Procure the OleDbDataReader object to browse the recordset 
OleDbDataReader rdr = cmd.ExecuteReader();

//Keep reading records in the forward direction
while (rdr.Read())
{
   //Use one of the various methods available to read the data
   //Eg:- GetValue, GetValues, Item etc.
. . .
. . .    
}

}

答案 2 :(得分:0)

使用System.Data.OleDb打开与新OleDbConnection(connectionString)的连接。 连接字符串应为“Provider = Microsoft.Jet.OLEDB.4.0; Data Source = [PathToMDBFile]”

var conn = new OleDbConnection(connectionString);
 var ds = new DataSet();
                var adapter = new OleDbDataAdapter("SELECT Column1 FROM Table1", conn);
                conn.Open();
                adapter.Fill(ds);
                conn.Close();
var value = ds.Tables[0].Rows[0]["Column1"].ToString();

这将获得名为Column1

的列中的第一个值