如何只取出Oracle的ODBC连接DSN?(0分)

  • 主题发起人 主题发起人 hello8
  • 开始时间 开始时间
H

hello8

Unregistered / Unconfirmed
GUEST, unregistred user!
用GetDatabaseNames取出的是所有的DSN,有什么办法只取出是Oracle的DSN?
 
应该可以判断一下。我试试看看。
 
select *from sys.all_tables 看看这个语句对你有用不?
 
to : 杰克
不是选择表,是选择win中配的ODBC的DSN
 
哦,我晕,那就不清楚了
 
不能直接取出你想要的结果。你可以先将所有的DSN取到Strings中,再通过函数对Strings
进行遍历,就可选择出想要的结果。下面是你想要的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
Mystringlist : TStringList;
MaxDbCount : Integer;
begin
MyStringList := TStringList.Create;
try
Session.GetDatabaseNames(MyStringList);
for MaxDbCount := 0 to (MyStringList.Count - 1) do
begin
if (Session.GetAliasDriverName(MyStringList.Strings[MaxDbCount]) = 'ORACLE') then
ListBox1.Items.Add(MyStringList.Strings[MaxDbCount]);
end;
finally
MyStringList.Free;
end;
end;
 
试了一下,好像不行,跟踪了一下看到
Session.GetAliasDriverName(MyStringList.Strings[MaxDbCount])
对Oracle的DSN得到的值是'Inaccessable Value'
 
我是在我的机器上经过试验才将源代码贴出来的呀!
待会,我再试一下!
 
我的机器上是可以的呀!delphi 5.0
你既然能用GetDatabaseNames,那么函数GetAliasDriverName的应用也应该没问题。

先别加判断,往listbox1中加记录,可以先
showmessage(Session.GetAliasDriverName(MyStringList.Strings[MaxDbCount]));
 
看到了,我装的是Oracle9.2的客户端,ODBC的驱动程序名称叫Oracle In OraHome90,
因此得到的oracle数据库的这个值是Oracle In OraHome90,
怪不得不能取得
如果别人装的是oracle8的驱动那么不就不行了?有没有其他的方法?
 
不明白你的实际用意是什么,在实际应用过程中,应该不会象你这样的这么复杂吧!
那个对照值你可以先用getdrivername将内容过滤出来呀,你没必要写成ORACLE或者是
Oracle In OraHome90等固定值。
 
其实就是把本机上配置的ODBC中有关oracle的DSN在下拉框中显示出来,
本来是把所有的ODBC中的DSN都显示,客户说太多了,不知道是哪一个,
所以要少一点,只取出是Oracle的DSN,方便选择
最好就像TOAD中选择要连接的数据库那样,只有Oracle的数据源
 
后退
顶部