如何使用 SQL 在 MS Access 数据库中“显示表”?
Posted
技术标签:
【中文标题】如何使用 SQL 在 MS Access 数据库中“显示表”?【英文标题】:How do I use SQL to "Show tables" in a MS Access database? 【发布时间】:2010-02-11 13:36:38 【问题描述】:我的代码基于问题Access get all tables 的答案,但出现以下错误:
DBD::ODBC::st 执行失败: [微软][ODBC微软访问 Driver] 无法读取记录;不 'MSysObjects' 的读取权限。 (SQL-42000) 在 direct.pl 第 22 行。
[Microsoft][ODBC Microsoft Access Driver] 无法读取记录;不 '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";
【问题讨论】:
使用模式不是更好吗? cpan.org/authors/id/T/TL/TLOWERY/DBD-ADO-2.1.readme 谢谢!将其发布为答案,我会接受。 【参考方案1】:架构怎么样?
http://www.cpan.org/authors/id/T/TL/TLOWERY/DBD-ADO-2.1.readme
【讨论】:
这里有一个更好的 DBD 链接:ADO search.cpan.org/dist/DBD-ADO/lib/DBD/ADO.pm 谢谢。从 Sinan Ünür 对我的帖子的一次编辑中,我了解到它可以更加简洁。使用search.cpan.org/perldoc?后跟感兴趣的模块,如search.cpan.org/perldoc?DBD::ADO以上是关于如何使用 SQL 在 MS Access 数据库中“显示表”?的主要内容,如果未能解决你的问题,请参考以下文章
使用 ODBC 连接时如何在 MS Access 或 SQL Server 中使用日期数据类型
如何使用 SQL 在 MS Access 中“删除”和未命名的关系/约束?
如何使用 SQL 重命名具有关系的 MS Access 表?
如何在 MS Access VB 中访问 SQL Server 标量函数