Dúvida no DBExpress
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
Curtidas 0
Respostas
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+
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
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
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+
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
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
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
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+
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
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
É 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