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

问题描述:

我基础上,这个问题的答案Access get all tables我的代码,但我得到以下错误:如何使用SQL在MS Access数据库中“显示表”?

DBD::ODBC::st execute failed: [Microsoft][ODBC Microsoft Access Driver] Record(s) cannot be read; no read permission on 'MSysObjects'. (SQL-42000) at direct.pl line 22.

[Microsoft][ODBC Microsoft Access Driver] Record(s) cannot be read; no read permission on 'MSysObjects'. (SQL-42000) at direct.pl line 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

难道你用模式更好吗? http://www.cpan.org/authors/id/T/TL/TLOWERY/DBD-ADO-2.1.readme – Fionnuala 2010-02-11 14:22:20

+0

谢谢!发布作为答案,我会接受它。 – 2010-02-11 14:47:19

+0

下面是更好的DBD链接:ADO http://search.cpan.org/dist/DBD-ADO/lib/DBD/ADO.pm – daotoad 2010-02-11 16:05:10

+0

谢谢。从SinanÜnür对我的帖子的编辑之一,我了解到它可以更简洁。使用http://search.cpan.org/perldoc?随后是感兴趣的模块,例如http://search.cpan.org/perldoc?DBD::ADO – 2010-02-11 16:45:07