2010-06-01 1 views
4

Согласно http://www.delphigroups.info/2/3/181838.htmlDelphi/ADO: Какие компоненты? TADODataSet и TADOCommand или TADOQuery?

Предпочтительный подход с ADO компонентов заключается в использовании TADODataSet и TADOCommand. TADOQuery (и TADOTable и TADOStoredProc) предусмотрены для совместимости .

Используйте TADODataSet для SQL, который возвращает результирующие наборы и TADOCommand для SQL , которые этого не делают.

Я незнакомый n00b - кто собирается кодировать много материалов ADO. Правильно ли указано это утверждение?


P.s есть ли хорошая открытый исходный код программа для Windows, которая позволит мне визуализировать & исследовать содержимое моих баз данных?

Какие компоненты следует использовать для чего-то, что не возвращает/не возвращает результат?

+2

Я считаю, что связанная ссылка и ваш собственный вопрос уже дают подсказки, чтобы ответить вам. Используйте TADOCommand и TADODataSet. Кроме того, используйте элементы управления Active Directory для пользовательского интерфейса. –

ответ

6

Это утверждение верно. TADODataset и TADOCommand являются прямыми интерфейсами к собственным объектам ADO и могут выполнять всю задачу, выполненную другими тремя, которые существуют чтобы облегчить перенос приложений, написанных для BDE (Borland Database Engine), внедряя аналогичный интерфейс - они в конечном итоге называют первые два.

+0

Можете ли вы помочь? Когда я использую TADODataset.Execute(); Я в конечном итоге с _Recordset, можете ли вы рассказать мне, как это сделать, чтобы увидеть результаты? – Mawg

+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.

Например, вы могли бы написать запрос UPDATE \ INSERT и выбрать запись и сделать это в одном компоненте вместо введения двух.

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 - это среда с открытым исходным кодом для изучения базы данных.

+0

+1 Спасибо, что хорошо выглядит (когда я выясняю, как его запускать ;-) – Mawg

3

Вы 2 различных классификации здесь либо в зависимости от природы объекта SQL (TADOTable, TADOQuery и TADOStoredProc) или действия/результата (TADODataSet и TADOCommand).
Исторический подход к Delphi является более первым, в то время как ADO по своей природе больше второго.

Оба варианта могут быть полезны в зависимости от того, что вы хотите сделать.

Я рекомендую вам прочитать справку Delphi на компонентах ADO.
Например, вы найдете полезные примечания: «ADOdb.TADODataSet и SQLExpr.TSQLDataSet имеют свойство CommandType, которое позволяет указать, представляют ли они таблицу, запрос или хранимую процедуру. Имена свойств и методов наиболее похожи на запрос , но TADODataSet позволяет указать индекс, подобный набору данных типа таблицы."

Если вы уверены, что палочки с ADO и никогда не нужно изменить и порт для других слоев данных, а затем идет„ADO маршрута“с TADODataSet и TADOCommand.
Вы получите большую часть ADO с ним, и будет проще использовать документы и примеры MS.

+0

Я такой n00b, что нашел, что Delphi помогает запутать: -/Я полагаю, что это всегда так, когда альтернативы предлагаются , поэтому я подумал, что я попрошу гуру. Я предполагаю, что мой тип команды всегда будет текстовым. – Mawg

+2

Если вы используете любую версию после Delphi 7, справка может запутать самого опытного разработчика Delphi. – 2010-06-01 12:22:26

+0

Я думаю, это компромисс. Вы выбираете более легкую, более старую, совместимую (т. Е. Не ADO специфическую) парадигму с TADOQuery/TADOStoredProc или более «родным» способом ADO. Хотя вы можете, постарайтесь не смешивать их. –