Как мне перечислить все запросы в файле MS Access, используя OleDB в C #? - PullRequest
2 голосов
/ 16 декабря 2008

У меня есть файл Access 2003, который содержит 200 запросов, и я хочу распечатать их представление в SQL. Я могу использовать Design View для просмотра каждого запроса, вырезать и вставить его в файл, но это утомительно. Также мне, возможно, придется сделать это снова для других файлов Access, поэтому я определенно хочу написать программу для этого.

Где хранятся запросы в базе данных Access? Я не могу найти ничего, говорящего, как добраться до них. Я не знаком с Access, поэтому буду признателен за любые указания. Спасибо!

Ответы [ 4 ]

6 голосов
/ 16 декабря 2008

Процедуры - это то, что вы ищете:

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

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

conn.Close();

Это даст вам таблицу данных со следующими столбцами (среди прочих):

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 голос
/ 30 сентября 2011

Если вы хотите сделать быстрый запрос вручную.

SELECT MSysObjects.Name
FROM MSysObjects
WHERE type = 5
1 голос
/ 16 декабря 2008

вы можете собрать это вместе, используя метод OleDbConnection GetSchema вместе с тем, что Remou опубликовал относительно схем ADO

упс забыл ссылку: MSDN

0 голосов
/ 16 декабря 2008

Не в C #, но может быть хорошим местом для начала:

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

...