var a:TStringList; begin a := TStringList.Create; ADOConnection1.GetTableNames(a); ShowMessage(inttostr(a.Count)); a.Free; end;
TO: Wally_wu ADOConnection1.DataSetCount 取出的已连接表数TO: nobitian 谢谢! 此方法虽然可行,但我的问题的前提是不使用这种方法。
你是说取得某个数据库的表的个数吧:在SQL SERVER中:select * from sysobjects where xtype = 'U'
应该是这样写:adoquery1.sql.add('select count(*) as tablecount from sysobjects where xtype= ''u'''); adoquery1.open showmessage(adoquery1.fieldbyname('tablecount').asstring);
TO Drate: 这样写在SQL-SERVER中是对的,其它数据库就不行了 还有其它方法吗?
to cenwangsky(屹康): 你的问题不是通过ADOConnection直接取得表的个数? 不连接ADOConnection怎么取得表?就算GetTableNames也可连接呀,使用adoquery1也要连接呀!
TO: Wally_wu 那是取得已连接上这个Connection的TADODataSet的个数,面不是这Connection中表的个数。
如果是SQL Server的话,可以这样做: select count(name) from sysobjects where type='U'
select * from sysobjects where type='U' select * from sysobjects where xtype= 'u' 都可以,楼主说是什么数据库呢》》?? 你是不是想使用SQL语句,而是用一种方法呢!
TO mengxianboa1521 是的,我想解决的是通用问题,不是只针对sql-server的。最好不用sql语句。
请高手指教。
ADOConnection1.DataSetCount
a:TStringList;
begin
a := TStringList.Create;
ADOConnection1.GetTableNames(a);
ShowMessage(inttostr(a.Count));
a.Free;
end;
adoquery1.open
showmessage(adoquery1.fieldbyname('tablecount').asstring);
这样写在SQL-SERVER中是对的,其它数据库就不行了
还有其它方法吗?
你的问题不是通过ADOConnection直接取得表的个数?
不连接ADOConnection怎么取得表?就算GetTableNames也可连接呀,使用adoquery1也要连接呀!
那是取得已连接上这个Connection的TADODataSet的个数,面不是这Connection中表的个数。
select count(name) from sysobjects where type='U'
select * from sysobjects where xtype= 'u'
都可以,楼主说是什么数据库呢》》??
你是不是想使用SQL语句,而是用一种方法呢!
是的,我想解决的是通用问题,不是只针对sql-server的。最好不用sql语句。
而楼主又说不用其他,。
郁闷
学习ing。