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

ADODataSet是否可取代ADOCommand,ADOTable,ADOQuery...

尚未結案
RoxetteI
一般會員


發表:8
回覆:4
積分:2
註冊:2002-04-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-16 22:15:06 IP:211.74.xxx.xxx 未訂閱
各位好 由於剛跨進Delphi領域,所以想請教各位,是否 ADODataSet可以取代ADOCommand、ADOTable、ADOQuery、ADOStoredProc等元件的功能 例如我只要設定 ADODataSet.CommandType,就可以轉換不同的功能。 因為有以上觀念的疑問,所以想請教各位,我的觀念是否正確,謝謝...
l630521
資深會員


發表:15
回覆:349
積分:372
註冊:2003-02-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-17 09:10:41 IP:220.228.xxx.xxx 未訂閱
TADODataSet元件是ADO資料集元件中最接近Recordset物件的元件,大都是使用來執行SQL敘述用的,ADOCommand、ADOTable、ADOQuery、ADOStoredProc各有其特定的功能。 例如我只要設定 ADODataSet.CommandType,就可以轉換不同的功能。是沒錯的。 李維大師書上提到,用TADODataSet的執行效率並不一定會比TADOQuery、TADOTable來得好,如果你對BDE/IDAPI的資料集不熟悉的話,你可以使用TADODataSet做為存取資料的元件,如果你非常習慣BDE/IDAPI的資料集的使用方法,那麼你可以使用TADOQuery或是TADOTable做為存取資料的元件。 個人認為看你喜歡用那一種元件皆可,一樣可以達到目的! Ian
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-17 09:21:06 IP:202.62.xxx.xxx 未訂閱
您好﹗    您的觀念基本上是正确的﹐但其中還是有些部分需要注解一些﹕    ADO存取技術元件幾乎是采用一對一的方式來封裝原生的ADO物件﹐TADODataSet元件了ADO的RecordSet物件﹐并且提供了和Delphi的資料感知元件連結的能力﹐TADODataSet元件的CommandType特性代表了TADODataSet封裝的RecordSet物件會執行什么形態的命令﹐我們可以把TADOTable元件看作是封裝設定CommandType為cmdTable的RecordSet物件﹐把TADOStoredProc元件看作是封裝設定CommandType為cmdStoredProc的RecordSet物件﹐但對于ADOCommand﹑ADOQuery元件來講還是有一些些區別﹒    可以把TADOQuery元件看作是封裝設定CommandType為cmdText的RecordSet物件﹐但若使用TADODataSet元件﹐其所使用的SQL敘述必須是有回傳資料的語法(如Select等)﹐其不支援無回傳資料的語法(如Insert, Delete, Update等)﹐而TADOQuery元件無此限制﹐可使用有回傳資料和無回傳資料的語法﹒    而TADOCommand元件也是使用SQL語言的元件﹐但其和TADODataSet元件的不同之處在于其只能使用于資料定義語言(Data Definition Language)和無回傳資料的SQL語法﹐其作用在于TADOCommand元件使用的資源較少﹐如果ADO應用程式中有經常需要執行不回傳資料的SQL敘述時﹐使用TADOCommand元件可得到較好的效率﹒另外需要說明的一點是在TADOCommand元件中使用有回傳資料的SQL語法并不是不可以﹐只是必須再搭配一個ADO的資料集元件才可以接受由TADOCommand回傳的結果資料﹐所以不如直接使用ADOQuery或ADODataSet來得節省資源﹒    供您參考﹗    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
l630521
資深會員


發表:15
回覆:349
積分:372
註冊:2003-02-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-17 11:16:09 IP:220.228.xxx.xxx 未訂閱
引言: 您好﹗ 您的觀念基本上是正确的﹐但其中還是有些部分需要注解一些﹕ ADO存取技術元件幾乎是采用一對一的方式來封裝原生的ADO物件﹐TADODataSet元件了ADO的RecordSet物件﹐并且提供了和Delphi的資料感知元件連結的能力﹐TADODataSet元件的CommandType特性代表了TADODataSet封裝的RecordSet物件會執行什么形態的命令﹐我們可以把TADOTable元件看作是封裝設定CommandType為cmdTable的RecordSet物件﹐把TADOStoredProc元件看作是封裝設定CommandType為cmdStoredProc的RecordSet物件﹐但對于ADOCommand﹑ADOQuery元件來講還是有一些些區別﹒ 可以把TADOQuery元件看作是封裝設定CommandType為cmdText的RecordSet物件﹐但若使用TADODataSet元件﹐其所使用的SQL敘述必須是有回傳資料的語法(如Select等)﹐其不支援無回傳資料的語法(如Insert, Delete, Update等)﹐而TADOQuery元件無此限制﹐可使用有回傳資料和無回傳資料的語法﹒ 而TADOCommand元件也是使用SQL語言的元件﹐但其和TADODataSet元件的不同之處在于其只能使用于資料定義語言(Data Definition Language)和無回傳資料的SQL語法﹐其作用在于TADOCommand元件使用的資源較少﹐如果ADO應用程式中有經常需要執行不回傳資料的SQL敘述時﹐使用TADOCommand元件可得到較好的效率﹒另外需要說明的一點是在TADOCommand元件中使用有回傳資料的SQL語法并不是不可以﹐只是必須再搭配一個ADO的資料集元件才可以接受由TADOCommand回傳的結果資料﹐所以不如直接使用ADOQuery或ADODataSet來得節省資源﹒ 供您參考﹗ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
看完cashxin2002前輩精闢的解說,讓我又對ADO的用法多瞭解了一些,謝謝! Ian
RoxetteI
一般會員


發表:8
回覆:4
積分:2
註冊:2002-04-07

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