我想以编程方式检索存储在访问数据库中的每个查询的查询文本。我想使用OleDbConnection.GetSchema或OleDbConnection.GetOleDbSchemaTable甚至ADOX来获取所需的信息。我精通C#。如何以编程方式检索所有查询的查询文本
可以这样做吗?
您能否提供一个示例或指向好例子的链接?
我想以编程方式检索存储在访问数据库中的每个查询的查询文本。我想使用OleDbConnection.GetSchema或OleDbConnection.GetOleDbSchemaTable甚至ADOX来获取所需的信息。我精通C#。如何以编程方式检索所有查询的查询文本
可以这样做吗?
您能否提供一个示例或指向好例子的链接?
如果你的目的是要在代码中使用VBA这个你可以尝试这样的事情
Dim qdef As QueryDef
Dim qdefs As QueryDefs
Dim i As Integer
Dim name As String
Dim qSql As String
Set qdefs = Application.CodeDb.QueryDefs
For Each qdef In qdefs
qname = qdef.name
qSql = qdef.SQL
Next qdef
的qdef对象也会给你关于查询了很多详细信息。
为C#,你将不得不裁判添加到项目的接入互操作(的Microsoft Access ##对象库)
,并使用
private void QueryValues()
{
Microsoft.Office.Interop.Access.Application app = new Application();
app.OpenCurrentDatabase(@"C:\Tests\C#\MS Access\WindowsApplication1\New Microsoft Office Access 2007 Database.accdb", false,"");
QueryDefs qdefs = app.CurrentDb().QueryDefs;
foreach (QueryDef qdef in qdefs)
{
string qname = qdef.Name;
string qSql = qdef.SQL;
}
app.Quit(AcQuitOption.acQuitSaveNone);
}
我有一个非常类似的问题,解决最后一一周,我想在那里extract view commands from a SQL server。我的第一个想法是使用ADOX,但最终无法与SQL Server一起使用(并且我没有使用Access对其进行测试)。该理论认为ADOX有一个'views'集合,每个视图都有一个'command'属性。该属性保存与该视图对应的SQL字符串。代码应该是(在声明工具列表中的ADOX库之后)
'corrected after @HansUp comments'
Dim cat as ADOX.catalog, _
vue as ADOX.view
Set cat = New ADOX.catalog
Set cat.activeconnection = myActiveADODBconnection
For each vue in cat.views
debug.print vue.command.commandText
Next vue
Set vue = nothing
Set cat = nothing
嗯,它是写在'飞'...我会更新代码谢谢! –
你知道我将如何从C#访问这个吗?我需要使用ADOX吗? – IanT8