我想以編程方式檢索存儲在訪問數據庫中的每個查詢的查詢文本。我想使用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