conexao dbexpress
Ola amigos!!! tudo bem???
gostaria de saber como faço para conectar minha aplicação com mysql via dbexpress???
Obrigado
gostaria de saber como faço para conectar minha aplicação com mysql via dbexpress???
Obrigado
Uiliangurjon
Curtidas 0
Respostas
Mition
12/10/2003
Em um DataModule coloque os seguintes componentes:
da pasta DBExpress:
* SQLConnection1
* SQLDataSet1
da pasta DataAccess:
* DataSetProvider1 (aqui está o pulo do gato!)
* ClientDataSet1
* DataSource1
configurações das propriedades de
1. SQLConnection1
1.1 ConnectionName:=MySQLConnection
1.2 DriverName := MySQL
1.3 LoginPrompt:=false
1.4 Params:
Host Name: <endereço no servidor> ´Ex: 200.215.20.3´
Data BAse: <nome do seu BD>
User Name: <login de acesso>
Password: <senha de acesso>
1.5. Connected:=true;
configurações das propriedades de
2. SQLDataSet12.1 SQLConnection:=SQLConnection1 (ou o nome que vc escolheu)
2.2 CommandType -> 03 opções:
2.2.1. Se vc escolher ctQuery (padrão), deverá trabalhar com instruções SQL (insert, update, delete, select) - (recomendável)
2.2.2. ctTable, instruções normais de objetos Table
2.2.3. ctStoredProc, procedimentos de instruções em SQL para ´stored procedures´ (gatilhos - muito útil, qdo necessário)
2.3. CommandText:= select * from <nome tabela> <demais comandos> ou clique em ´...´ para abrir o editor SQL e monte sua instrução. Utilize inicialmente instruções de consulta - em outras ocasiões, poderá utilizar comandos de execução (+ prá frente).
2.4. Active:=true
configurações das propriedades de
3. DataSetProvider1
3.1 DataSet:=SQLDataSet1 (ou o nome que vc escolheu)
configurações das propriedades de
4. ClientDataSet1 (manterá os registros da tabela em memória (buffer) para a navegação bidirecional - vc não estará navegando na table e sim na consulta)
4.1 ProviderName:=DataSetProvider1 (ou o nome que vc escolheu)
4.2 Active:=true
OBS.:esse componente ClientDataSet substitui o componente Table! a vantagem é que vc está trabalhando com os registro/tables em sua máquina. O servidor será atualizando (e a rede acessada) somente após a confirmação dos dados inseridos, alterados ou excluídos. Não haverá um grande tráfego na rede.
configurações das propriedades de
5. DataSource1 (aí é muita moleza - se vira!(risos))
OBS: para cada tabela em seu data módulo, vc deverá ter um componente SQLDataSet,DataSetProvider, ClientDataSet e DataSource. (somente um SQLconnection compartilhado entre todos eles)
Se houver necessidade de vc acessar outro Banco de Dados, deverá colocar outro SQLConnection.
Coisas a se considerar:
1. As buscas são feitas através do método LOCATE dos ClientDataSets (esqueça seek, gotokey,gotonearest,...). Como as tabelas já tem seu índice ou campos indexados, ele fará a consulta por onde ele achar mais rápido (claro que depende se chave que vc está buscado é índice ou indexado)
2. Navegação é normal (first, prior, ...)
3. Não utilize o método Post (apesar de estar habilitado). Motivo: Post atualiza apenas o ClientDataSet (em buffer), e não atualizará o BD Servidor.
4. No lugar de Post, utilize o método applyUpdates(-1). Desse modo atualizará o ClientDataSet e o SQLDataSet (diretamente no BD Servidor).
Ex: DataModule1.ClientDataSet1.applyupdates(-1);
5. Daqui para frente, só utilize instruções em SQL (se preferir. Lógico!)
6. Se preferir utilizar os métodos Insert, Delete, Edit, etc, no ClientDataSet (como no Table), tudo bem, mas nunca utilize POST para confirmar e sim ApplyUpdates(-1)!
7. Se um SQLConnection estiver fechado, a partir do momento que vc abrir um SQLDataSet, a conexão será automaticamente aberta. Não acontece o mesmo se fizer o ClientDataSet.
UFA! Quanto tempo para digitar!
Boa Sorte
A propósito (NÃO TEM COMO DAR ERRADO POIS EU UTILIZO DIARIAMENTE!)
[]´S e boa sorte
Mição
P.S. Uma boa bibliografia->Delphi 6 com FireBird/Interbase - Bastiaan Pieter Marinus Wilderom/Marcelo Frank - Editora Érica. Esse livro explica detalhadamente o que passei para vc! Sem falar que o livro é um projeto de PDV (posto de venda - com impressora fiscal e uso de código de barras - MUITO ÚTIL E NECESSÁRIO)
Revistas Clube Delphi Edições -> 17,18,22,23 e 28.
da pasta DBExpress:
* SQLConnection1
* SQLDataSet1
da pasta DataAccess:
* DataSetProvider1 (aqui está o pulo do gato!)
* ClientDataSet1
* DataSource1
configurações das propriedades de
1. SQLConnection1
1.1 ConnectionName:=MySQLConnection
1.2 DriverName := MySQL
1.3 LoginPrompt:=false
1.4 Params:
Host Name: <endereço no servidor> ´Ex: 200.215.20.3´
Data BAse: <nome do seu BD>
User Name: <login de acesso>
Password: <senha de acesso>
1.5. Connected:=true;
configurações das propriedades de
2. SQLDataSet12.1 SQLConnection:=SQLConnection1 (ou o nome que vc escolheu)
2.2 CommandType -> 03 opções:
2.2.1. Se vc escolher ctQuery (padrão), deverá trabalhar com instruções SQL (insert, update, delete, select) - (recomendável)
2.2.2. ctTable, instruções normais de objetos Table
2.2.3. ctStoredProc, procedimentos de instruções em SQL para ´stored procedures´ (gatilhos - muito útil, qdo necessário)
2.3. CommandText:= select * from <nome tabela> <demais comandos> ou clique em ´...´ para abrir o editor SQL e monte sua instrução. Utilize inicialmente instruções de consulta - em outras ocasiões, poderá utilizar comandos de execução (+ prá frente).
2.4. Active:=true
configurações das propriedades de
3. DataSetProvider1
3.1 DataSet:=SQLDataSet1 (ou o nome que vc escolheu)
configurações das propriedades de
4. ClientDataSet1 (manterá os registros da tabela em memória (buffer) para a navegação bidirecional - vc não estará navegando na table e sim na consulta)
4.1 ProviderName:=DataSetProvider1 (ou o nome que vc escolheu)
4.2 Active:=true
OBS.:esse componente ClientDataSet substitui o componente Table! a vantagem é que vc está trabalhando com os registro/tables em sua máquina. O servidor será atualizando (e a rede acessada) somente após a confirmação dos dados inseridos, alterados ou excluídos. Não haverá um grande tráfego na rede.
configurações das propriedades de
5. DataSource1 (aí é muita moleza - se vira!(risos))
OBS: para cada tabela em seu data módulo, vc deverá ter um componente SQLDataSet,DataSetProvider, ClientDataSet e DataSource. (somente um SQLconnection compartilhado entre todos eles)
Se houver necessidade de vc acessar outro Banco de Dados, deverá colocar outro SQLConnection.
Coisas a se considerar:
1. As buscas são feitas através do método LOCATE dos ClientDataSets (esqueça seek, gotokey,gotonearest,...). Como as tabelas já tem seu índice ou campos indexados, ele fará a consulta por onde ele achar mais rápido (claro que depende se chave que vc está buscado é índice ou indexado)
2. Navegação é normal (first, prior, ...)
3. Não utilize o método Post (apesar de estar habilitado). Motivo: Post atualiza apenas o ClientDataSet (em buffer), e não atualizará o BD Servidor.
4. No lugar de Post, utilize o método applyUpdates(-1). Desse modo atualizará o ClientDataSet e o SQLDataSet (diretamente no BD Servidor).
Ex: DataModule1.ClientDataSet1.applyupdates(-1);
5. Daqui para frente, só utilize instruções em SQL (se preferir. Lógico!)
6. Se preferir utilizar os métodos Insert, Delete, Edit, etc, no ClientDataSet (como no Table), tudo bem, mas nunca utilize POST para confirmar e sim ApplyUpdates(-1)!
7. Se um SQLConnection estiver fechado, a partir do momento que vc abrir um SQLDataSet, a conexão será automaticamente aberta. Não acontece o mesmo se fizer o ClientDataSet.
UFA! Quanto tempo para digitar!
Boa Sorte
A propósito (NÃO TEM COMO DAR ERRADO POIS EU UTILIZO DIARIAMENTE!)
[]´S e boa sorte
Mição
P.S. Uma boa bibliografia->Delphi 6 com FireBird/Interbase - Bastiaan Pieter Marinus Wilderom/Marcelo Frank - Editora Érica. Esse livro explica detalhadamente o que passei para vc! Sem falar que o livro é um projeto de PDV (posto de venda - com impressora fiscal e uso de código de barras - MUITO ÚTIL E NECESSÁRIO)
Revistas Clube Delphi Edições -> 17,18,22,23 e 28.
GOSTEI 0
Theofernandes
12/10/2003
Tchê, estava seguindo os passos para acessar o MySQL, só que no momento que coloquei o SQLConnection, Connected = true, deu um erro dizendo que não foi possível carregar libmySQL.dll.
Imagino que tenho que registrar esta. Mas estou tendo problemas para isto.
Se puderes me ajudar, fico grato.
Obrigado.
Theo Fernandes
Imagino que tenho que registrar esta. Mas estou tendo problemas para isto.
Se puderes me ajudar, fico grato.
Obrigado.
Theo Fernandes
GOSTEI 0
Luizhfj
12/10/2003
Coloque a DLL do diretorio SYSTEM do windows, se WINNT ou XP PRO no SYSTEM32
GOSTEI 0
Danielclubedelphi
12/10/2003
atualize a dbexpmysql.dll. Procura na internet q vc acha se deus quiser
só isso
só isso
GOSTEI 0
Eneblis
12/10/2003
:wink: Olá Colega!!
:( Se você puder, gostaria que você me ajudasse na seguinte dúvida
Estou tendo problemas com o MySQL quanto a campos autoincrementos.
Para conectar o Banco do MYSQL estou usando os componentes do dbExpress, como você instruiu.
Tem algumas tabelas que defini no Servidor atributos como autoincrementos, mas na hora de executar uma inserção/atualização, através de instruções SQL, com o componente SQLQuery, ele exige que o campo ´CODIGO´ por exemplo, não esteja em branco, ou seja, ele é um campo requerido.
O certo seria inserir os outros atributos e deixar o servidor gerar o código autoincremento, como era no Delphi 4, 5 e 6.
Eu já mudei as seguintes propriedades do campo:
- AutoGenerateValue := arAutoInc;
- Required := False;
Mas mesmo assim, quando atualizo o banco ele gera uma exception dizendo que o campo ´CODIGO´ deve ter algum valor.
Me disseram que em algumas versões do Delphi 7, a DLL do MySQL (dbexpmysql.dll) tem alguns ´bugs´. Este que eu me referi deve ser um deles.
Estou usando o MySQL 3.23.55. Se você possuir este driver, por favor, encaminhe-o para mim.
:cry: Obrigada! Silbene
:( Se você puder, gostaria que você me ajudasse na seguinte dúvida
Estou tendo problemas com o MySQL quanto a campos autoincrementos.
Para conectar o Banco do MYSQL estou usando os componentes do dbExpress, como você instruiu.
Tem algumas tabelas que defini no Servidor atributos como autoincrementos, mas na hora de executar uma inserção/atualização, através de instruções SQL, com o componente SQLQuery, ele exige que o campo ´CODIGO´ por exemplo, não esteja em branco, ou seja, ele é um campo requerido.
O certo seria inserir os outros atributos e deixar o servidor gerar o código autoincremento, como era no Delphi 4, 5 e 6.
Eu já mudei as seguintes propriedades do campo:
- AutoGenerateValue := arAutoInc;
- Required := False;
Mas mesmo assim, quando atualizo o banco ele gera uma exception dizendo que o campo ´CODIGO´ deve ter algum valor.
Me disseram que em algumas versões do Delphi 7, a DLL do MySQL (dbexpmysql.dll) tem alguns ´bugs´. Este que eu me referi deve ser um deles.
Estou usando o MySQL 3.23.55. Se você possuir este driver, por favor, encaminhe-o para mim.
:cry: Obrigada! Silbene
GOSTEI 0
Nixbeau
12/10/2003
Em um DataModule coloque os seguintes componentes:
da pasta DBExpress:
* SQLConnection1
* SQLDataSet1
da pasta DataAccess:
* DataSetProvider1 (aqui está o pulo do gato!)
* ClientDataSet1
* DataSource1
configurações das propriedades de
1. SQLConnection1
1.1 ConnectionName:=MySQLConnection
1.2 DriverName := MySQL
1.3 LoginPrompt:=false
1.4 Params:
Host Name: <endereço no servidor> ´Ex: 200.215.20.3´
Data BAse: <nome do seu BD>
User Name: <login de acesso>
Password: <senha de acesso>
1.5. Connected:=true;
configurações das propriedades de
2. SQLDataSet12.1 SQLConnection:=SQLConnection1 (ou o nome que vc escolheu)
2.2 CommandType -> 03 opções:
2.2.1. Se vc escolher ctQuery (padrão), deverá trabalhar com instruções SQL (insert, update, delete, select) - (recomendável)
2.2.2. ctTable, instruções normais de objetos Table
2.2.3. ctStoredProc, procedimentos de instruções em SQL para ´stored procedures´ (gatilhos - muito útil, qdo necessário)
2.3. CommandText:= select * from <nome tabela> <demais comandos> ou clique em ´...´ para abrir o editor SQL e monte sua instrução. Utilize inicialmente instruções de consulta - em outras ocasiões, poderá utilizar comandos de execução (+ prá frente).
2.4. Active:=true
configurações das propriedades de
3. DataSetProvider1
3.1 DataSet:=SQLDataSet1 (ou o nome que vc escolheu)
configurações das propriedades de
4. ClientDataSet1 (manterá os registros da tabela em memória (buffer) para a navegação bidirecional - vc não estará navegando na table e sim na consulta)
4.1 ProviderName:=DataSetProvider1 (ou o nome que vc escolheu)
4.2 Active:=true
OBS.:esse componente ClientDataSet substitui o componente Table! a vantagem é que vc está trabalhando com os registro/tables em sua máquina. O servidor será atualizando (e a rede acessada) somente após a confirmação dos dados inseridos, alterados ou excluídos. Não haverá um grande tráfego na rede.
configurações das propriedades de
5. DataSource1 (aí é muita moleza - se vira!(risos))
OBS: para cada tabela em seu data módulo, vc deverá ter um componente SQLDataSet,DataSetProvider, ClientDataSet e DataSource. (somente um SQLconnection compartilhado entre todos eles)
Se houver necessidade de vc acessar outro Banco de Dados, deverá colocar outro SQLConnection.
Coisas a se considerar:
1. As buscas são feitas através do método LOCATE dos ClientDataSets (esqueça seek, gotokey,gotonearest,...). Como as tabelas já tem seu índice ou campos indexados, ele fará a consulta por onde ele achar mais rápido (claro que depende se chave que vc está buscado é índice ou indexado)
2. Navegação é normal (first, prior, ...)
3. Não utilize o método Post (apesar de estar habilitado). Motivo: Post atualiza apenas o ClientDataSet (em buffer), e não atualizará o BD Servidor.
4. No lugar de Post, utilize o método applyUpdates(-1). Desse modo atualizará o ClientDataSet e o SQLDataSet (diretamente no BD Servidor).
Ex: DataModule1.ClientDataSet1.applyupdates(-1);
5. Daqui para frente, só utilize instruções em SQL (se preferir. Lógico!)
6. Se preferir utilizar os métodos Insert, Delete, Edit, etc, no ClientDataSet (como no Table), tudo bem, mas nunca utilize POST para confirmar e sim ApplyUpdates(-1)!
7. Se um SQLConnection estiver fechado, a partir do momento que vc abrir um SQLDataSet, a conexão será automaticamente aberta. Não acontece o mesmo se fizer o ClientDataSet.
UFA! Quanto tempo para digitar!
Boa Sorte
A propósito (NÃO TEM COMO DAR ERRADO POIS EU UTILIZO DIARIAMENTE!)
[]´S e boa sorte
Mição
P.S. Uma boa bibliografia->Delphi 6 com FireBird/Interbase - Bastiaan Pieter Marinus Wilderom/Marcelo Frank - Editora Érica. Esse livro explica detalhadamente o que passei para vc! Sem falar que o livro é um projeto de PDV (posto de venda - com impressora fiscal e uso de código de barras - MUITO ÚTIL E NECESSÁRIO)
Revistas Clube Delphi Edições -> 17,18,22,23 e 28.
Amigo, Estou Utilizando o Delphi 2006 + MySql 5.0.
Crio um SimpleDataSet e um DataSource. Tudo em Paz na Conexao com o BD, Soh que na Hora de Achar as Tabelas no ´CommandText´ nao aparece nada.
SimpleDataSet1.DataBase.Datase.CommandType := ctTable
SimpleDataSet1.DataBase.Datase.CommandText := ´deveria aparecer a lista de tabelas e nao aparece nada´.
Linkage.DriverName := MySQL
Linkage.LibraryName := dbxmys30.dll (Ele eh compativel com versoes acima da 4.1 do MySQL (Orginal do Delphi 2006))
Linkagem.VendorLib := libmysql.dll (Orginal do Delphi 2006)
Desculpe se Tecnicamente nao esta bem escrito, estou iniciando e esses comandos estou repassando com livro que estou estudando: ´Delphi 2005: Aplicacoes de Banco de Bados com Interbase 7.5 e MySQL 4.0.23´
Eu Criei o BD no MySQL Control Center 0.9.4.
Quando Uso o MySQL Administrator, A conexao é feito normalmente com o Banco (BD_GDP) criado no Control Center.
Na parte Structure sempre fica uma interrogacao no SimpleDataSet1.
Se eu fizer com o SQLConnect e os outros componentes, dá no mesmo.
Isso tá me deixando Doido...
Agradeço a Ajuda Antecipadamente.
Germano Solter
GOSTEI 0
Harrison Façanha
12/10/2003
Olá gente...
Aproveitando o gancho consegui integrar BDS 2006 com Mysql 5 e realizo os cadastro normalmente...
usando dbexpress, ou seja, os componentes listados pelo nobre colega...
Minha pergunta e como aproveitar o autoincremento gerado pelo mysql, ja que da forma que eu faço eu uso no TQuery o sql select Max... ?
Att
GOSTEI 0
Harrison Façanha
12/10/2003
Ok ja deu certo obrigado pela ajuda...
GOSTEI 0
Wellington Silva
12/10/2003
Ok ja deu certo obrigado pela ajuda...
Estou na mesma situação. Acessava o Mysql pelo Zeos, agora estou tentando acessar pelo DbExpress e na hora de gravar estava querendo aproveitar o autoincremento do Banco. Como vocês resolveram essa situação ?
E eu utilizava o trio Cds + Query + Dprovider. Agora utilizando o SqlDataset, o procedimento é o mesmo ?Ou seja, fecho o SqlDataSet, passo a string Sql com algum parâmetro e abro novamente ?
Forte abraço a todos.
GOSTEI 0
Harrison Façanha
12/10/2003
Prezado Wellingto, você configura normalmente como está acostumado a fazer com o interbase, porém acrescente algumas configurações:
No DataSetProvader modifique as seguintes propriedades:
UpdateMode = upWhereChange
poCascadeUpdade = True
poPropagateChanges = True
Por fim, no ClientDataSet modifque a seguinte propriedade selecionando o campo que representa a chave primária da tabela em questão:
Field(Campo da Chave Primária).required = False
Isso deve ser o suficiente para funcionar.
Atenciosamente,
Harriso Façanha
No DataSetProvader modifique as seguintes propriedades:
UpdateMode = upWhereChange
poCascadeUpdade = True
poPropagateChanges = True
Por fim, no ClientDataSet modifque a seguinte propriedade selecionando o campo que representa a chave primária da tabela em questão:
Field(Campo da Chave Primária).required = False
Isso deve ser o suficiente para funcionar.
Atenciosamente,
Harriso Façanha
GOSTEI 0