Как я могу использовать SQL для «Показать таблицы» в базе данных MS Access? - PullRequest
1 голос
/ 11 февраля 2010

Я основал свой код на ответе на вопрос Доступ ко всем таблицам , но я получаю следующую ошибку:

DBD :: ODBC :: st выполнить не удалось: [Microsoft] [ODBC Microsoft Access Драйвер] Запись (и) не может быть прочитана; нет разрешение на чтение для MSysObjects. (SQL-42000) в строке direct.pl 22.

[Microsoft] [ODBC Microsoft Access Драйвер] Запись (и) не может быть прочитана; нет разрешение на чтение для MSysObjects. (SQL-42000) в строке direct.pl 22.

Вот то, что я пробовал до сих пор. Я прокомментировал свою первую попытку. Текущая попытка основана на SELECT «Table» AS [Table] , о котором упоминал в своем ответе на указанный вопрос . Я получаю ту же ошибку в любом случае. Вот мой код целиком:

use strict;
use warnings;

use DBI;

my $dbh = DBI->connect('DBI:ODBC:MutantDB','','') 
    or die 'could not connect to database' . DBI::errstr;

my $sth = $dbh->prepare('SELECT "Table" AS [Table],
             MSysObjects.Name,
             MSysObjects.Type
             FROM MSysObjects
             WHERE MSysObjects.Type =1
             Or MSysObjects.Type=6
             ORDER BY MSysObjects.Name;')
    or die 'could not prepare statement' . $dbh->errstr();


# my $sth = $dbh->prepare('SELECT MSysObjects.*, MSysObjects.Type
#              FROM MSysObjects
#              WHERE (((MSysObjects.Type)=1)) OR (((MSysObjects.Type)=6));'
# ) or die 'could not prepare statment' . $dbh->errstr();

$sth->execute() or die $sth->errstr();

while( my ($name, $type) = $sth->fetchrow()){
    print "name: $name \t type: $type \n";
}

1 Ответ

2 голосов
/ 11 февраля 2010
...