全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1136
推到 Plurk!
推到 Facebook!

有現成的函數可判斷 Table 是否已存在於資料庫嗎?

尚未結案
hazard
一般會員


發表:30
回覆:24
積分:10
註冊:2006-10-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-14 14:43:56 IP:61.218.xxx.xxx 未訂閱
如主題,我有想過包在 try except 裡,如果用 query 下 sql Raise 錯誤 在except 裡再作 create 的動作? 但不知是否有現成的或更好的方法 DB: informix 使用 BDE
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-14 22:26:14 IP:218.32.xxx.xxx 未訂閱
現成的...據我所知...沒有    可以查查 "GetTableNames" 的說明.
yorkland
高階會員


發表:2
回覆:138
積分:108
註冊:2004-12-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-16 17:46:58 IP:61.59.xxx.xxx 未訂閱
function TMSDEKits.IsTableExist(const sDBName, sTableName: string; const IncludeSysFiles: Boolean): Boolean;
var
  ADOQuery: TADOQuery;
  Ret: Boolean;
begin
  Ret:=False;
  try
    ADOQuery:=TADOQuery.Create(FOwner);
    try
      ADOQuery.ConnectionString:=Self.GetConnectionString(False);
      ADOQuery.SQL.Add('use ' sDBName);
      // 包含系統檔案..
      if IncludeSysFiles then begin
        ADOQuery.SQL.Add(Format('select * from sysobjects where (name=''%s''))',[sTableName]));
      end else begin
        ADOQuery.SQL.Add(Format('select * from sysobjects where (name=''%s'') and (xtype=''U'')',[sTableName]));
      end;
      ADOQuery.Open;
      if ADOQuery.Active then begin
        Ret:=(ADOQuery.RecordCount>0);
      end;
    except
      FMessageDlg.ErrorDlg(Handle, '錯誤', const_ErrorMsg_connectfail);
    end;
  finally
    ADOQuery.Close;
    FreeAndNil(ADOQuery);
  end;
  Result:=Ret;
end;
yu_blake
一般會員


發表:0
回覆:23
積分:14
註冊:2003-01-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-19 10:40:33 IP:218.163.xxx.xxx 未訂閱
hi 您好    如果是使用oracle 可以直接 下SQL.. select * from ALL_TABLES where TABLE_NAME='TargetTbl' 來判斷喔. Hope helpful --
系統時間:2024-05-19 12:10:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!