如何判斷資料庫欄位是否已存在? |
尚未結案
|
asure
一般會員 發表:4 回覆:2 積分:1 註冊:2005-12-06 發送簡訊給我 |
|
christie
資深會員 發表:30 回覆:299 積分:475 註冊:2005-03-25 發送簡訊給我 |
|
asure
一般會員 發表:4 回覆:2 積分:1 註冊:2005-12-06 發送簡訊給我 |
MS-SQL
由於我是維護套軟,有時需增加欄位... 我希望能做到自動判斷欄位是否存在,若不再則建立. 我想到的使用方法有3種: ====================================================== 1 For i:=0 To GameFrame1.ADOQuery1.Fields.Count-1 Do begin If GameFrame1.ADOQuery1.Fields[i].FieldName='num' Then begin ... end; end; 缺點 : 要一個一個比對,太耗效能 ====================================================== 2.Alter Table PCStateData add sMAC ... 缺點:利佣例外判斷,但Log會膨漲 ====================================================== 3.建立欄位完成後並寫 regedit 值,爾後藉由regedit值判斷是否需建立 缺點 : 若回復資料庫或者系統重灌,資料庫就會錯誤. |
allen-86
一般會員 發表:28 回覆:44 積分:19 註冊:2008-02-01 發送簡訊給我 |
|
shunaaron
高階會員 發表:13 回覆:94 積分:106 註冊:2006-10-06 發送簡訊給我 |
可以PK值先用in的方式如
select seqno from table1 where seqon in ('AA','BB','CC') ; ... ttStr := TStringList.Create; if not adods.Eof do begin try ttStr.add(adods.FieldByname('seqno').AsString); finally adods.Next; end; end; ... for ttI := 0 to ttC-1 do begin if ttStr.indexOf(InStr[0,ttI]) = - 1 then begin insert end else no insert end; 先將其Select 出來~有找到表示有資料了 可以用Indexof 的方式在做一個值標~ 這樣~可以減少許多時間~效能不會比一筆一筆~來筆對慢 另2,3方式是需要考慮在做的. ===================引 用 asure 文 章=================== MS-SQL 由於我是維護套軟,有時需增加欄位... 我希望能做到自動判斷欄位是否存在,若不再則建立. 我想到的使用方法有3種: ====================================================== 1 For i:=0 To GameFrame1.ADOQuery1.Fields.Count-1 Do begin If GameFrame1.ADOQuery1.Fields[i].FieldName='num' Then begin ... end; end; 缺點 : 要一個一個比對,太耗效能 ====================================================== 2.Alter Table PCStateData add sMAC ... 缺點:利佣例外判斷,但Log會膨漲 ====================================================== 3.建立欄位完成後並寫 regedit 值,爾後藉由regedit值判斷是否需建立 缺點 : 若回復資料庫或者系統重灌,資料庫就會錯誤.
------
程式沒有這麼難 只是還沒打通其中要絕 |
christie
資深會員 發表:30 回覆:299 積分:475 註冊:2005-03-25 發送簡訊給我 |
MS-SQL
------------ SELECT A.* FROM syscolumns A WHERE A.id = (SELECT id FROM sysobjects WHERE name = 'tab-name') 舉例: SELECT A.* FROM syscolumns A WHERE A.id = (SELECT id FROM sysobjects WHERE name = 'XUPIMAGE') ------------------------------------------------------------------------------------------------------ SELECT A.* FROM syscolumns A WHERE A.id = (SELECT id FROM sysobjects WHERE name = 'XUPIMAGE') and name='column-name' 舉例: SELECT A.* FROM syscolumns A WHERE A.id = (SELECT id FROM sysobjects WHERE name = 'XUPIMAGE') and name='X_10' ===================引 用 asure 文 章=================== 當我要建立資料庫欄位時,我要如何判斷資料庫欄位已經存在? 請各位先進不吝指導,感謝.
------
What do we live for if not to make life less difficult for each other?
編輯記錄
christie 重新編輯於 2008-06-26 08:43:44, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |