如何使用SQL在MS Access数据库中“显示表”?

时间:2010-02-11 13:36:38

标签: sql perl ms-access ms-access-2007 dbi

我的代码基于问题Access get all tables的答案,但收到以下错误:

  

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],旁观者在回答question时提到了这一点。我得到同样的错误。这是我的代码,完整的:

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 个答案:

答案 0 :(得分:2)