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 に答える