【求助】如何在DBI中找到DSN?

【求助】如何在DBI中找到DSN?

【求助】如何在DBI中找到DSN?
小弟利用DBI,connect到了一个DSN为“mm”的数据库。
在程序中,我想回显该DSN名字,(这里是“mm”)
该怎么实现呢?
WIN32::ODBC提供一个GetDSN()函数
DBI里面有没有类试的函数呢?
google了一下没有发现,特来求教于各位前辈
望各位前辈不吝赐教!
^_^
#!/usr/bin/perl -w--us.
#!/usr/bin/perl -w
use strict;
use DBI;

print "Content-type:text/html;\n\n";

my @ary = DBI->available_drivers;

foreach (@ary) {
print $_, DBI->data_sources($_), '<br />';
}
----
通过DBI->data_sources('ODBC')可以获得数据源如:DBI:ODBC:LocalServerDBI:ODBC:out,需要做一些处理来获得数据源名




   

DBI->data_sources('OD.
DBI->data_sources('ODBC')

我试过,但是它返回的是所有ODBC的DSN,我没有办法知道什么是自己的当前Connect的DSN
use DBI;--my $dbh;--.
use DBI;

my @ary = DBI->available_drivers;

eval {
foreach (@ary) {
print $_, ' --> ', DBI->data_sources($_), '<br />';
}
};

my $dbh;
eval {
$dbh = DBI->connect('dbi:ODBC:out', 'sa', 'sa',
{
PrintError => 0,
RaiseError => 1
}
)
};
if ($@) {
print
'Sorry! Server Busy.';
exit;
}

print DBI->data_sources('ODBC');

print '数据源名:', $dbh->{Name};
---
查了一下帮助文档,应该是这样,通过$dbh->{Name}获取数据源名 [CCB]c0[/CCB]




   

[quote]回复给 hangring :.
[quote]回复给 hangring : use DBI;--my $dbh;--....[/quote]
您测试了吗?
我的提示是$dbh->{Name}是undef的
是的,我有测试过,是真正.
是的,我有测试过,是真正的正在使用的DSN,在本地测试过,在服务器也测试过了
我放服务器上了,你可以看看这边 [url]http://www.tracesoul.com/dbi.pl[/url]

代码如下:
#!/usr/bin/perl -w
BEGIN {
($_ = $0) =~ s![\\/][^\\/]+$!!;
push @INC, "$_/pm";
push @INC, "$_/inc";
}
use strict;
use CGI qw/:standard start_div/;
use DBI;
require 'global.pl';

print
header(-type => 'text/html', -charset => 'utf-8'),
start_html(
-title=> 'DBI',
-lang => 'zh-CN',
-script => [
{ -language => 'JavaScript', -src => 'js/global.js' }
],
-style => [
{ -src => ['css/global.css', 'css/index.css'] }
]
);

my $dbh;
eval {
$dbh = DBI->connect('dbi:ODBC:out', '略', '略',
{
PrintError => 0,
RaiseError => 1
}
)
};
if ($@) {
print
'Sorry! Server Busy.',
end_html;
exit;
}
print div({-style => 'width: 600px; padding: 5px; margin: 10px; border: 1px solid #ccc;'}, '数据源:', $dbh->{Name});
$dbh->disconnect;

print
end_html;




   

奇怪,现在可以了--谢谢.
奇怪,现在可以了
谢谢 hangring
^_^
互相学习 :).