Запись (и) не может быть прочитана;нет разрешения на чтение "MSYSObjects" - PullRequest
0 голосов
/ 18 мая 2018

В VB.NET я хочу проверить, существует ли таблица "LEDGER_FULL" или нет.

Я использую этот запрос:

SELECT MSysObjects.Name, MSysObjects.Type 
FROM MSysObjects 
WHERE (MSysObjects.Name='LEDGER_FULL') AND (MSysObjects.Type=1)

Моя база данных MS-Доступ к базе данных.После выполнения вышеуказанного запроса я получаю следующее исключение:

Записи не могут быть прочитаны;нет разрешения на чтение для MSYSObjects

Как решить эту проблему?

1 Ответ

0 голосов
/ 18 мая 2018

Не используйте системные объекты MS Access.В большинстве случаев у вас будут проблемы с разрешениями.Вы можете получить доступ к информации базы данных (например, к таблицам, представлениям и т. Д.), Используя OleDbConnection.GetSchema.

Вот функция, которую я использую, чтобы проверить, существует таблица или нет:

Public Shared Function TableExists(tableName As String) As Boolean
    Using conn As New OleDbConnection(ConnectionString)
        conn.Open()
        Dim dt As DataTable = conn.GetSchema("Tables")
        Dim tables As String() = dt.AsEnumerable().Select(Function(dr) dr.Field(Of String)("TABLE_NAME")).ToArray
        Return tables.Contains(tableName)
    End Using
End Function

Использование:

If Not TableExists("LEDGER_FULL") Then
    ' The table doesn't exist. Do something about it.
End If

Надеюсь, это поможет.

...