3

C#を使用してAccess 2007ですべてのテーブルの名前と列テーブルの名前を取得する方法は?

テーブルの名前をコンボボックスに、列名をリストボックスにバインドしたい。

4

2 に答える 2

3

この単純な方法は、すべての列の名前を含むデータテーブルを返します

void Main()
{
     using(OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;" + 
            @"Data Source=D:\temp\temp.mdb;Persist Security Info=False;")) 
     { 
       con.Open();
       DataTable schema = con.GetSchema("Columns");
       foreach(DataRow row in schema.Rows)
           Console.WriteLine("TABLE:" + row.Field<string>("TABLE_NAME") + 
                             " COLUMN:" + row.Field<string>("COLUMN_NAME"));
    }
}

「列」を「テーブル」に変更して、テーブルに関する詳細情報を含む別のデータテーブルを取得することもできます。(インデックスの「インデックス」も)

于 2013-04-12T18:28:36.407 に答える
0

このコードは次のとおりです。

 OpenFileDialog openfiledialog1 = new OpenFileDialog();
        openfiledialog1.Title = "path select ";

        openfiledialog1.Filter = "Access 2003 (*.mdb)|*.mdb|Access 2007|*.accdb";
        if (openfiledialog1.ShowDialog() == DialogResult.OK)
        {
            txtpath.Text = openfiledialog1.InitialDirectory + openfiledialog1.FileName;
            using (OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + openfiledialog1.FileName))
            {

                con.Open();
                DataTable schema = con.GetSchema("Columns");
                foreach (DataRow row in schema.Rows)
                {         
                   listBox1.Items.Add(row.Field<string>("COLUMN_NAME"));
                   cmbloadtable.Items.Add(row.Field<string>("TABLE_NAME"));
                }

            }
        }
于 2013-04-13T02:35:16.477 に答える