如何判断一个表是否存在(用sql语句)?(50分)

  • 主题发起人 主题发起人 lxv
  • 开始时间 开始时间
L

lxv

Unregistered / Unconfirmed
GUEST, unregistred user!
现在使用adocommand,使用sql语句来判断一个表是否存在,使用execute来执行,
那么该怎么做?
 
补充说明:用sql server 2000
 
try
.........
.commandtext:='select count(*) from XXXXXXX';
.............
except
'not exist'
exit;
end;
...........
 
我对sql不是很懂,可以解释一下count(*)吗?
 
adocommand.sql.add('select name from sysobjects where xtype='U'
and name='+表名+')'
adocommand.requery();
if varisnull(adocommand.fieldbyname('name')) then
showmessage('No the table');

 
TADOConnection 对象不是有 GetTableNames 方法吗?可以得到一个TStrings,再用TStrings
的 IndexOf 来判断 Table 是否存在。

另外,如果是 SQL Server ,直接到 sysobjects 表查不就行了?
if exists (select 1
from sysobjects
where id = object_id('表名')
and type = 'U')

还有,如果是 SQL Server ,直接用系统函数不也行吗?
object_id('object_name') --返回 NULL 就表示对象不存在。

有 n 种方法,略微探索、学习一下就能掌握了,好好学吧!能自学就更好!
 
dirk 高手,方法可行
 
可以从SysObjects表中取得当前数据表的名称来判断
 
gettablenames太浪费内存了。
--
高手如云啊!
 
不过,如果用execute的返回是一个_RecordSet,是什么东西?如何使用?
 
哈哈,好几种:
a. if exists ( select * from sysobjects where name='tablename')
b. SELECT count(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'T1'
c、if exists (select * from sysobjects where id = object_id(N'[dbo].[demo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
A肯定对,其他没验证。
直接在SQL的查询分析器运行就行了


 
多人接受答案了。
 
后退
顶部