我有一个旧的遗留VB6应用程序,我最终更新到.NET但我遇到了一个绊脚石:它所做的一件事就是使用ADODB提供当前数据库连接的列表使用this GUID specified by Microsoft颁发的特定于提供程序的架构行集。这是工作的ADODB代码
Set RS = CN.OpenSchema(adSchemaProviderSpecific, , "{947bb102-5d43-11d1-bdbf-00c04fb92675}")
现在我知道如果我要添加对最新的COM ActiveX数据对象库的引用,我仍然可以使用这个ADODB方法,但我真的想避免这种情况,如果可能的话,并找到一种方法来做到这一点使用OLEDB。
我已经创建了下面的函数,并尝试了GetOleDbSchemaTable&amp ;;的各种组合。 GetSchema - 有和没有限制,GUID作为字符串传递,但它总是错误或返回一个空表。
'Get a list of users connected to the core database
Public Function GetUserRoster() As DataTable
Dim connString As String = GetConnString(coreDB)
If String.IsNullOrEmpty(connString) Then Return Nothing
Using conn As New OleDbConnection(connString)
Try
conn.Open()
Dim oGUID As New Guid("{947bb102-5d43-11d1-bdbf-00c04fb92675}")
Dim restrictions() As String = {Nothing, Nothing, Nothing, "Table"}
Dim schemaTable As DataTable = conn.GetOleDbSchemaTable(oGUID, restrictions)
Return schemaTable
Catch ex As Exception
logger.Error("Failed to evaluate the database user roster. {0}{1}", vbCrLf, ex.ToString)
End Try
End Using
Return Nothing
End Function
那么,这是否可能,或者除了使用旧的COM ADODB功能之外别无选择?