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

时间:2008-12-16 14:12:27

标签: c# ms-access oledb

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

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

4 个答案:

答案 0 :(得分:6)

您正在寻找程序:

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

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

conn.Close();

这将为您提供一个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();
}

答案 1 :(得分:1)

你可以使用OleDbConnection的 GetSchema 方法以及Remou发布的关于ADO模式的内容将它们放在一起

哎呀忘了链接:MSDN

答案 2 :(得分:1)

如果您想手动快速查询。

SELECT MSysObjects.Name
FROM MSysObjects
WHERE type = 5

答案 3 :(得分:-2)

不在C#中,但可能是一个好的开始:

http://www.datastrat.com/Code/DocDatabase.txt