1

我正在创建一个 perl 程序,除了用户名和密码外,用户还必须输入数据库的名称,并且程序使用DBI->connect. 我想做的是让程序显示它可以连接到的数据库名称列表,并且用户所要做的就是输入他们的用户名和密码,以便于使用。我查看了数据源的DBI 文档,认为这是我需要的,但是当我调用DBI->data_sources('Oracle')它时,它什么也没返回(但也没有遇到错误)。我看不出这是怎么发生的,因为如果用户提供数据库名称,程序就可以毫无障碍地连接。有什么我做错了,或者我没有得到什么?

是的,我意识到我可以手动打开 tnsnames.ora 文件并解析它。事实上,这就是我首先做的,但我更喜欢使用 DBI。

4

1 回答 1

2

尝试这个:

#!/usr/bin/perl -w

use DBI;

my @drivers = DBI->available_drivers();

die "No drivers found!\n" unless @drivers; # should never happen

foreach my $driver ( @drivers ) {
    print "Driver: $driver\n";
    my @dataSources = DBI->data_sources( $driver );
    foreach my $dataSource ( @dataSources ) {
        print "\tData Source is $dataSource\n";
    }
    print "\n";
}
于 2012-08-20T17:22:27.803 回答