如何在C#中使用OleDB列出MS Access文件中的所有查询?

Mar*_*sky 2 c# oledb ms-access

我有一个包含200个查询的Access 2003文件,我想在SQL中打印出它们的表示形式.我可以使用设计视图查看每个查询并将其剪切并粘贴到文件中,但这很乏味.此外,我可能不得不在其他Access文件上再次执行此操作,所以我绝对想编写一个程序来执行此操作.

查询在哪里存储Access数据库?我找不到任何说如何得到他们的东西.我对Access不熟悉,所以我很感激任何指针.谢谢!

Mar*_*ell 6

程序是你正在寻找的:

OleDbConnection conn = new OleDbConnection(connectionString);
conn.Open();

DataTable queries = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Procedures, null);

conn.Close();
Run Code Online (Sandbox Code Playgroud)

这将为您提供一个DataTable,其中包含以下列(以及其他列):

PROCEDURE_NAME:查询的名称

PROCEDURE_DEFINITION:SQL定义

所以你可以这样循环遍历表:

foreach(DataRow row in queries.Rows)
{
    // Do what you want with the values here
    queryName = row["PROCEDURE_NAME"].ToString();
    sql = row["PROCEDURE_DEFINITION"].ToString();
}
Run Code Online (Sandbox Code Playgroud)

  • 一些更正:列名称为PROCEDURE_DEFINITION(不是复数).要获得所有查询,您必须检索过程和查询.程序是那些带参数的程序.对于查询,列为TABLE_NAME和VIEW_DEFINITION. (3认同)