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

請問一下用那一個物件更新資料庫資料

尚未結案
Schuamcher
一般會員


發表:30
回覆:42
積分:14
註冊:2004-11-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-16 17:03:07 IP:211.22.xxx.xxx 未訂閱
我現在寫一個程式更新資料庫資料程式如下 ADOQuery1->Close(); ADOQuery1->SQL->Add("SELECT * From A"); ADOQuery1->Open(); ADOQuery1->Fields->Fields[1]->AsFloat = 1; ADOQuery1->UpDateRecords; 但是執行後會出現 ADOQuery1是不能insert的訊息,請問一下我是物件用錯了(ADOQuery), 還是程式寫錯了
Arlung Miao
初階會員


發表:9
回覆:44
積分:25
註冊:2004-08-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-16 22:19:01 IP:219.134.xxx.xxx 未訂閱
ADOConnection->Execute("Update A Set Fieldx = 1 Where ...");
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-16 23:25:24 IP:211.22.xxx.xxx 未訂閱
是不是用ADOCOMMAND比較適合?! < class="code"> ADOQuery.SQL.Clear; ADOQuery.SQL.Add('Select * From XX資料表'); ADOQuery.Close; ADOQuery.Open; ADOCommand.CommandType := cmdText; ADOCommand.CommandText := 'Update XX資料表 Set 欄位A=''' Edit1.Text ''' Where 欄位B=''' Edit2.Text ''''; //update還有另外語法,可以自己查! ADOCommand.Execute; ----------------------------------------------- Creation is the fundation of promotion. 發表人 - stallion 於 2005/05/16 23:26:27
Arlung Miao
初階會員


發表:9
回覆:44
積分:25
註冊:2004-08-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-17 08:38:56 IP:61.235.xxx.xxx 未訂閱
朋友, 我想TADOCommand也當然也是可以達到目的。但是我考慮用ADOConnection的原因如下: 1. 樓主要執行的功能簡單,使用ADOConnection非常方便(不用再定義一個ADOCommand的變數,也省卻的釋放等麻煩)。 2. ADOCommand執行前會將SQL編譯成Stored Procedure。所以,如果語句僅僅執行一次,或者語句條件、欄位等不固定,或者語句本身比較簡單的情況下,反而好時
Schuamcher
一般會員


發表:30
回覆:42
積分:14
註冊:2004-11-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-17 10:19:41 IP:211.22.xxx.xxx 未訂閱
謝謝各位先進的解說 那麼再請問一下,如果我要更新某一欄位的全部列的數值 例如我有個1*4的矩陣,當我第五欄的四列資料將更改成這個矩陣的資料時,我該如何作,謝謝,
Arlung Miao
初階會員


發表:9
回覆:44
積分:25
註冊:2004-08-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-17 10:46:28 IP:61.235.xxx.xxx 未訂閱
可以説得更詳細一些嗎?
Schuamcher
一般會員


發表:30
回覆:42
積分:14
註冊:2004-11-18

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-05-17 22:38:20 IP:59.121.xxx.xxx 未訂閱
假設table1 有兩個欄位(職位、人數) 職位分別為士、農、工、商 人數分別為1、2 、3 、4 其資料庫為為Access檔 當我有一個陣列為Array[5,6,7,8] 請問一下我該如何用最快方式將 人數改成5,6 ,7 ,8呢,謝謝
Arlung Miao
初階會員


發表:9
回覆:44
積分:25
註冊:2004-08-25

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-05-17 23:19:14 IP:219.134.xxx.xxx 未訂閱
對不起,給你寫了一段Delphi的代碼,請自己轉換一下。    
var
  arr1: array[0..3] of string;
  arr2: array[0..3] of integer;
  cSql: string;
  adoConnection: TADOConnection;
  ...
begin
  ...
  arr1[0] := '士';
  arr1[1] := '农';
  arr1[2] := '工';
  arr1[3] := '商';      arr2[0] := '5';
  arr2[1] := '6';
  arr2[2] := '7';
  arr2[3] := '8';
  cSql := 'BEGIN';
  for i := 0 to 3 do begin
    cSql := cSql   #10#13
            'UPDATE Table1 SET 人数 = '   IntToStr(arr2[i])
            '  WHERE 职位 = '   QuotedStr(arr1[i])
            ';'
          ;
  end;
  cSql := cSql   #10#13   'END;';
  adoConnection.Execute(cSql);      {
  cSql =>
  BEGIN
    UPDATE Table1 SET 人数 = 5 WHERE 职位 = '士';
    UPDATE Table1 SET 人数 = 6 WHERE 职位 = '农';
    UPDATE Table1 SET 人数 = 7 WHERE 职位 = '工';
    UPDATE Table1 SET 人数 = 8 WHERE 职位 = '商';
  END;
  }
  ...
發表人 - arlung miao 於 2005/05/17 23:20:14
Schuamcher
一般會員


發表:30
回覆:42
積分:14
註冊:2004-11-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-05-20 16:13:07 IP:211.22.xxx.xxx 未訂閱
感謝Miao兄的幫忙
系統時間:2024-04-29 14:48:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!