使用ADO.NET/OLEDB获取Jet用户名单

时间:2013-12-03 19:26:04

标签: vb.net ms-access oledb jet

我有一个旧的遗留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功能之外别无选择?

1 个答案:

答案 0 :(得分:0)

你不能像我们以前那样简单地做。

那说你实际上可以读取访问锁定文件.ldb

微软也有一个dll这样做。

How to Read .LDB Files