C#无法使用OLEDB连接检索Access数据库中的表列表

时间:2013-03-11 10:26:58

标签: c# ms-access oledb

我试图从Access数据库中检索一个表列表,目前我正试图让this工作。但它有点没有。我的代码:

private void Form2_Load(object sender, EventArgs e)
{
    button1.Enabled = false;

    DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");
    DataTable userTables = null;

    using (DbConnection connection = factory.CreateConnection())
    {
        connection.ConnectionString = Globals.connString;
        // We only want user tables, not system tables
        string[] restrictions = new string[4];
        restrictions[3] = "Table";

        connection.Open();

        // Get list of user tables
        userTables = connection.GetSchema("Tables", restrictions);
    }

    List<string> tableNames = new List<string>();
    for (int i = 0; i < userTables.Rows.Count; i++)
        tableNames.Add(userTables.Rows[i][2].ToString());
}

根据我的调试,代码在connection.Open();之后没有执行任何操作。 &#34;全局&#34;是一个类,我存储我想要访问多个表单的变量。 我已经连接到Form1中的数据库,这可能会造成问题吗?在Form1中我使用此代码:

private void button2_Click(object sender, EventArgs e)
{
    OpenFileDialog fd = new OpenFileDialog();
    fd.Filter = "Database files(*.mdb)|*.mdb";
    DialogResult dr = fd.ShowDialog();
    fd.Dispose();

    if (dr == DialogResult.OK)
    {
        Globals.dbPath = fd.FileName;
        Form2 f2 = new Form2();
        f2.ShowDialog();
    }

    OleDbDataAdapter dAdapter = new OleDbDataAdapter(Globals.query, Globals.connString);
    OleDbCommandBuilder cBuilder = new OleDbCommandBuilder(dAdapter);
    DataTable dTable = new DataTable();
    dAdapter.Fill(dTable);
    BindingSource bSource = new BindingSource();
    bSource.DataSource = dTable;
    dataGridView2.DataSource = bSource;

}

功能基本上是这样的:

  1. 启动Form1
  2. 按按钮选择要连接的数据库
  3. 启动Form2 - 请求搜索查询并显示可用表格
  4. 显示所选表格
  5. 除了&#34;显示可用的表格&#34;我已经完成了大部分功能。我想在下拉列表中做。但由于代码不能执行,我无法做到。如果我在搜索查询中输入表名,它就可以工作,但是用户不会总是知道特定数据库中有哪些表,这就是我希望能够显示它们的原因。

    我做错了什么?

0 个答案:

没有答案