问题描述
我尝试在 C# 中识别具有数千个查询的数据库访问,只有带有虚构参数的查询,
(例如,从 soMetable 中选择 id、Nation、Name,其中 Nation = [Give a Nation])。
我尝试了 GetoleDbSchemaTable,但没有成功。 我还尝试使用 Access 中的 MSysQueries 和 MSysObjects,然后在 C# 中检索信息,但没有成功。
你能帮我什么?
解决方法
你必须参考互操作 - 这个:
using System.Data.OleDb
Imports Microsoft.Office.Interop.Access.Dao
public void ShowParms()
{
var strPath = @"C:\Users\AlbertKallal\source\repos\DesktopFun\test44.accdb";
Database db;
DBEngine dbACE = new DBEngine();
db = dbACE.OpenDatabase(strPath);
QueryDef query;
Parameter qParm;
foreach (var query in db.QueryDefs)
{
if (Strings.Left(query.Name,1) != "~")
{
Debug.Print("Query name = " + query.Name);
// parmaters
foreach (var qParm in query.Parameters)
Debug.Print("query parmater name = " + qParm.Name + " type = " + qParm.Type);
}
}
}
上面将列出每个查询 - 如果它有参数 - 那么它会列出那些。