首页 文章

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

提问于
浏览
0

我需要创建一个表单,我可以浏览和打开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

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

    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;
    }
    
  • 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.
    . . .
    . . .    
    }
    
    }
    
  • 5

    使用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的列中的第一个值

相关问题