Dúvida no DBExpress

Delphi

30/05/2005

Só consegui alguma coisa com dbexpress, usando quatro componentes. TDataSet, TClientDataSet, TSqlDataSet e TDataSetProvider. É muito componente para se conectar a um banco de dados. Tá deia a coisa por aqui, mas quero insistir na DBExpress. Tem como minimizar isso?


Paulo

Paulo

Curtidas 0

Respostas

Vinicius2k

Vinicius2k

30/05/2005

Colega,

Só se vc não utilizasse controles DB-Aware... como o dbExpress é unidirecional, para que vc tenha o buffer necessário para navegação bidirecional, é necessária a utilização do TDataSetProvider + TClientDataSet.

Vc *pode* (mas não deve) utilizar o TSimpleDataSet (ou TSQLClientDataSet no Delphi 6). Este componente embute o SQLDataSet, o DataSetProvider e o TClientDataSet, e até mesmo a TSQLConnection. Apesar de simplificar o uso, este componente é altamente [b:19850a9778]não-recomendado[/b:19850a9778] por todos, inclusive pela Borland.

Se vc quiser fazer um bom trabalho, terá que se acostumar com a quantidade de componentes.

[b:19850a9778]SQLConnection -> TSQLDataSet -> TDataSetProvider -> TClientDataSet -> TDataSource -> controles DB-Aware.[/b:19850a9778]


PS: Vc mencionou ´TDataSet´ e presumo que tenha sido um erro de digitação pois *deve* trata-se de um TDataSource. Está correto ?

T+


GOSTEI 0
Kotho

Kotho

30/05/2005

Na realidade, esta tecnologia é assim para poder facilitar o desenvolvimento em n-camadas... neste caso, os componentes SQLConnection->SQLQuery->DataSetProvider ficam do lado Servidor e os ClientDataSet->DBWare no lado Cliente...


GOSTEI 0
Vinicius2k

Vinicius2k

30/05/2005

OK. Mas devemos ´separar as coisas´...

A Midas (TDataSetProvider e TClientDataSet) pode ser utilizada com qualquer camada de acesso, não sendo uma caraterística exclusiva do dbExpress.

A associação, quase automática, se deve ao fato de que, se for necessário o uso de DB-Aware ou navegação bidirecional no dbExpress, vc precisa da Midas até mesmo em 2 camadas.

Concorda?

T+


GOSTEI 0
Microbios

Microbios

30/05/2005

Vinicius2K:

blz?
Você citou o conjunto de componentes para acesso via DBEXPRESS:

SQLConnection -> TSQLDataSet -> TDataSetProvider -> TClientDataSet -> TDataSource ->

posso usar no lugar do TSQLDataset um TSQLTABLE ?
Quais seriam os prós e os contras? Ou deveria mesmo mudar de cara, para o TSQLDATASET.... Sendo que pretendo trabalhar com controles DBAWARE normais, e não usar o SQL para inserção, exclusão e alteração. Uso Post->ApplyUpdates, Edit->Post->ApplyUpdates em um sistema pequeno e tem funcionado blz? O que vc acha disso?


Raphael.
São João Nepomuceno-MG :D


GOSTEI 0
Vinicius2k

Vinicius2k

30/05/2005

Salve Raphel ! :wink:

Vc pode usar TSQLTable, só não deve.

Active := True em um TSQLTable equivale a ´select * from <TABELA>´, ou seja, sem especificar colunas, sem qualquer filtro WHERE, sem utilização de índices por ORDER BY, etc... Resumindo, sem nenhum recurso Cliente/Servidor que otimize o desempenho da aplicação.

Por estes motivos, TxxxDataSets são sempre melhores do TxxxTables. Na verdade, as TxxxTables e TxxxQueries só existem para facilitar a migração de aplicações baseadas em camadas de acesso mais antigas.

Eu recomendo que vc utilize TSQLDataSets e SQL para que a sua aplicação seja escalável e para que vc não se assuste mais tarde com problemas e desempenho. Sendo que o SQL pode ser utilizado apenas para os ´Selects´, mantendo o uso da Midas para trabalhar os dados da forma que vc está habituado.

T+


GOSTEI 0
Microbios

Microbios

30/05/2005

Vinicius2K!

É como te falei.... Uso do TxxxTable em um aplicativo pequeno, desktop.
sem nenhum multiusuário e nem probabilidades remotas de ´haver um client/server!.´ Mas mesmo assim vou mudar. Eu estou migrando alguns aplicativos e não estou inteiramente ´por dentro´ do mundo client/server.
Obrigado pela explicação, retirou algumas dúvidas minhas.

Abraços.

Raphael


GOSTEI 0
POSTAR