2010-06-01 36 views
4

根據http://www.delphigroups.info/2/3/181838.htmlDelphi/ADO:什麼組件? TADODataSet和TADOCommand或TADOQuery?

與ADO 組件的優選方法是使用TADODataSet和 TADOCommand。 TADOQuery(和TADOTable 和TADOStoredProc)提供了 兼容性。

對於SQL,使用TADODataSet,返回 結果集和TADOCommand,對於不存在的SQL 。

我是一個無知的n00b - 誰即將編碼很多ADO的東西。上述說法是否正確?


P.S有沒有什麼好的開源的Windows程序,可以讓我想象&探索我的數據庫的內容?

哪些組件應該用於哪些/哪些不會返回結果?

+2

我相信鏈接引用和你自己的問題已經提供了線索來回答你。使用TADOCommand和TADODataSet。此外,使用用戶界面的DB Aware控件。 – 2010-06-01 08:43:17

回答

6

該語句是正確的TADODataset和TADOCommand是本機ADO對象的直接接口,可以執行其他三個存在的所有任務爲了簡化移植爲BDE(Borland數據庫引擎)編寫的應用程序,實現了一個類似的界面 - 它們最終稱爲前兩個。

+0

你能幫忙嗎?當我使用TADODataset.Execute();我最終得到一個_Recordset,你能告訴我如何循環查看結果嗎? – Mawg 2010-06-01 10:50:44

+1

如果使用TADODataset執行SELECT,只需打開它(或將Active設置爲True)。現在您可以使用First/Last/Next/Prev方法迭代結果。它使用TADOCommand,Execute返回一個ADO接口,它有MoveXXXX方法遍歷結果集,檢查ADO文檔。 – 2010-06-01 12:21:25

4

而且我會去半反對! ;-)

可能有些情況下,TADOQuery很適合這兩個作業的。 如果將導致您的查詢數據使用TADOQuery.Acvite := True, 如果您需要進行更新\插入\刪除使用TADOQuery.ExecSQL.

例如,您可以編寫一個查詢來更新\插入,然後選擇記錄,並做到在一個組件而不是介紹兩個。

DECLARE @ID int, @Mode int, @SomeValue varchar(20) 

SET @ID = :ID 
SET @Mode = :Mode 
SET @SomeValue = :SomeValue 

IF (@Mode = 1) //INSERT 
BEGIN 
    INSERT INTO dbo.YourTable(ID, SomeColumn) VALUES(@ID, @SomeValue) 
END ELSE 
IF (@Mode = 2) //UPDATE 
BEGIN 
    UPDATE dbo.YourTable SET SomeValue = @SomeValue WHERE ID = @ID 
END ELSE 
IF (@Mode = 3) //DELETE 
BEGIN 
    DELETE FROM dbo.YourTable WHERE ID = @ID 
END ELSE 
IF (@Mode = 4) //SELECT 
BEGIN 
    IF (@ID = -1) //SELECT ALL 
    BEGIN 
    SELECT * FROM dbo.YourTable 
    END ELSE 
    BEGIN 
    SELECT * FROM dbo.YourTable WHERE ID = @ID 
    END 
END 

只是一個例子,現在寫了。我希望你明白這個主意。

3

您使用哪個數據庫。 SqlBuddy是開源的IDE來探索數據庫。

+0

+1謝謝,這看起來不錯(當我弄清楚如何運行它;-) – Mawg 2010-06-01 10:13:47

3

你有2不同的分類這裏既取決於性質的SQL對象(TADOTable,TADOQuery和TADOStoredProc)動作/結果(TADODataSet和TADOCommand)的。
歷史上的德爾菲方法更多的是第一,而ADO本質上更多的是第二。

兩者都可以是有用的,這取決於你想要做什麼。

我建議你閱讀Delphi幫助上的ADO組件。例如: 「ADOdb.TADODataSet和SQLExpr.TSQLDataSet有一個CommandType屬性,可以指定它們是表示表,查詢還是存儲過程。屬性和方法名稱與查詢最相似類型數據集,儘管TADODataSet允許您像表類型數據集一樣指定索引。「

如果你一定要堅持使用ADO永不需要改變,並移植到其他數據圖層,然後走‘ADO路線’與TADODataSet和TADOCommand
你會得到的最ADO,它將更容易使用MS文檔和示例

+0

我是這樣一個n00b,我發現德爾福的幫助令人困惑: - /我想這是總是這樣,當提供替代方案時,所以我想我會問大師。 我想象一下,我的命令類型將始終是文本。 – Mawg 2010-06-01 10:13:23

+2

如果您在Delphi 7之後使用任何版本,則可能會使最熟練的Delphi開發人員感到困惑。 – 2010-06-01 12:22:26

+0

我想這是一個折衷。您可以使用TADOQuery/TADOStoredProc或更「原生」的ADO方式選擇更簡單,更舊,兼容(即不是ADO特定)範例。儘管你可以,但不要混淆它們。 – 2010-06-01 17:57:31