怎么样判定一个表存在?(20分)

  • 主题发起人 主题发起人 狼牙
  • 开始时间 开始时间

狼牙

Unregistered / Unconfirmed
GUEST, unregistred user!
if exists (select * from sysobjects where id = object_id(N'[dbo].[health_status]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[health_status]

这是sql的语句,怎么在程序中判断一个表存在就showmessage?
 
dao有判断表是否存在的函数
GetTableNames产生表清单,再判断表是否存在

 
用ADO访问,可以去判断表是否存在
 
如果是SQL Server,可以直接看管理表
 
你也可以这样去访问的呀!!
SQL 可以做的,只要你有权限,你都可以做!!
 
对不同的数据库有不同的方法
如 SQLSERVER7的objectid(),或直接从sysobjects 表中找。
(不需要都用,下面是VB的代码)
strSQL = "select object_id('" & strReportTmpName & "1') as yn"
cmmLedger.CommandText = strSQL
Set rstTmp = cmmLedger.Execute
If Not IsNull(rstTmp("yn")) Then
strSQL = "drop table " & strReportTmpName & "1"
cmmLedger.CommandText = strSQL
cmmLedger.Execute
End If

要不管数据库的话,你也可以直接用DELPHI的异常来处理,直接从表中取数,如果异常出现了
那就说明此表不存在。(当然有点偏激)

 
可以通过sql查询中返回的错误id进行判断
 
同意zbsfg。
 
function TDM.MyTableExists(ATableName: String): Boolean; //判断给定表是否存在
var
SL: TStrings;
I: Integer;
S: String;
begin
Result := False;
S := UpperCase(ATableName);
SL := TStringList.Create;
try
DM.ADOConnection.GetTableNames(SL, False); //取得表名
for I := 0 to (SL.Count - 1) do
begin
if UpperCase(SL)= S then
begin
Result := True;
Break;
end;{if}
end;{for}
finally
SL.Free;
end;{try}
end;

调用:
if MyTableExists('ATableName') then ShowMessage('已存在');
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部