关于Oracle的小问题?谢了 (50分)

  • 主题发起人 主题发起人 夜黑风高
  • 开始时间 开始时间

夜黑风高

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟我刚学oracle,一个小问题请大家帮忙
var:con,TADOConnection
con.close;
con.connectionstring:='Provider=MSDAORA.1;Password=tiger;User ID=scott;Data Source=mis;Persist Security Info=True';
con.open;
con.getTableNames (combobox1.items,false);
我用这个方法可以得到其他类型数据库中所有的表名,但同样的用在oracle为什么不行呢?在oracle中要怎么样得到表名?
 
Oracle最好使用BDE连接,不推荐使用Ado,如果要使用Ado的话,建议安装Oracle自己的Ado,这样也许会更好一些。
在BDE中可以使用这个方法获得表名。
另外,你可以尝试使用下面的SQL语句获得表名,不过仅仅是针对Oracle的。
select * from tab where tabtype='TABLE'
 
呵呵,登陆用户所建表格

select table_name from user_tables;
 
不用odbc提供的接口,用oracle自已的驱动试试
 
to:yzhshi 这个工具要做成全国各地区通用的,如果用bde还要装delphi的bde环境,太麻烦了
to:Nizvoo,xf-wangyi能不能说的详细一点,我只要连接完数据库后把数据库中所有的表名
添加到combobox1中就行了,最好给出代码,我也省事。因为时间比较紧
 
你用个ADOQuery连上你那个Connection,然后在
然后执行那个select ** from user**的。

我试了一下ADO可以得到用你的方法。

我们用DOA组件做Oracle的。
 
我给你写一个:(因在网吧,故不可能一句不错了)
oracle有两个视图:TAB 及USER_TABLES
TAB 更好一点其结构:
SQL> desc tab;
名称 空值? 类型
----------------------------------------------------- -------- ---------------
TNAME NOT NULL VARCHAR2(30)
TABTYPE VARCHAR2(7)
CLUSTERID NUMBER
代码部分:
var
rcount : integer;
sqlstr : string;
begin
with adoconnectin1 do begin
if active then begin
active := false;
free;
end;
connectionstring := 'provider=msdaora.1;data source=你的TNS名;user id=username;password=password';
connected := active;
end;
with adodataset1 do begin
if active then begin
active := false;
free;
end;
connection := adoconnect1;
sqlstr := 'select tname from username.tab where lower(tabtype)='+'table';
active := true;
end;
listbox1.items.clear;
for i:= 0 to adodataset1.recordcount -1 do begin
listbox1.items.add(adodataset1.fields[0].value);
end;
end;
在程序最后不要忘记释放ADODATASET 和 ADOCONNECTION
一般一个应用只要一个ADOCONNECTION 它只在主窗口的DESTROY中释放就可以




 
不过也问你一个问题:
我怎么找不到给高手放分的地方,由此可能也让朋友心冷了也,请你告诉我好吗?
我已点过那个RADIO了可在什么地方确认呢???
 
散分我已经会了,呵呵。
 
因为这个世界上象你这样的高手已经不多了

雪化的时候,我的灵魂在慢慢枯萎
 
多人接受答案了。
 
后退
顶部