我正在创建一个perl程序,除了用户名和密码之外,用户还必须输入数据库的名称,程序使用DBI->connect
连接到该数据库。我想要做的是让程序显示它可以连接到的数据库的名称列表,并且用户所要做的就是输入他们的用户名和密码,以便于使用。我查看了DBI documentation数据源,认为这是我需要的,但是当我调用DBI->data_sources('Oracle')
时,它不返回任何内容(但也没有遇到任何错误)。我不知道如何发生这种情况,因为如果用户提供数据库名称,程序可以毫无阻碍地连接。有什么东西我做错了,还是我没有得到的东西?
是的,我意识到我可以手动打开tnsnames.ora文件并解析它。事实上,这就是我先做的,但我最好使用DBI。
答案 0 :(得分: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";
}