Perl 通过DBI获取所有Oracle数据源的列表
我正在创建一个perl程序,用户除了输入用户名和密码外,还必须输入数据库的名称,程序使用Perl 通过DBI获取所有Oracle数据源的列表,perl,oracle,dbi,Perl,Oracle,Dbi,我正在创建一个perl程序,用户除了输入用户名和密码外,还必须输入数据库的名称,程序使用DBI->connect连接到该数据库。我想做的是让程序提供它可以连接到的数据库的名称列表,用户所要做的就是输入用户名和密码,以便于使用。我查看了for数据源,认为这正是我需要的,但当我调用DBI->data\u sources('Oracle')时,它不会返回任何内容(但也不会遇到错误)。我不明白这是怎么发生的,因为如果用户提供数据库名称,程序就能够连接,而不会出现任何故障。是我做错了什么,还是我没有得到什
DBI->connect
连接到该数据库。我想做的是让程序提供它可以连接到的数据库的名称列表,用户所要做的就是输入用户名和密码,以便于使用。我查看了for数据源,认为这正是我需要的,但当我调用DBI->data\u sources('Oracle')
时,它不会返回任何内容(但也不会遇到错误)。我不明白这是怎么发生的,因为如果用户提供数据库名称,程序就能够连接,而不会出现任何故障。是我做错了什么,还是我没有得到什么
是的,我意识到我可以手动打开tnsnames.ora文件并解析它。事实上,这是我第一次做的,但我更喜欢使用DBI。试试这个:
#!/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";
}
打印了四个内容:dbi::ODBC:dBASE文件、dbi:ODBC:Excel文件、dbi:ODBC:MS Access数据库、dbi:ODBC:Xtreme示例数据库2005您知道是否安装了任何dbi模块吗?我也会试试这个:my$length=@dsns,看看它返回了什么。你刚才把它改成ODBC了吗?您是否正在尝试安装Oracle驱动程序?是的,我删除了我的第一篇文章,因为您的代码与我所做的完全相同,只是我使用了“Oracle”而不是“ODBC”,所以我认为它们是相同的,因为我没有注意到差异我不想安装任何东西;一切都已经就绪,我已经能够连接到Oracle数据库。那么您是否回答了自己的问题?你还需要帮助吗?