xHarbour com SQL LIB - dúvidas

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Lucio Faria
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 04 Dez 2006 11:34

xHarbour com SQL LIB - dúvidas

Mensagem por Lucio Faria »

Olá a todos,

Estou testando o xHarbour com a SQL LIB e estou tendo o seguinte problema:

- ao fazer qualquer alteração nos dados (inclusão, deleção, update), o banco só atualiza (commit) na SAÍDA do sistema. Exemplo:

#include "SqlLib.ch"

// conecta com o MySQL

nConn := SqlLib_Conn( "18.0.5.200" ,,;
"teste" ,;
"teste" ,;
"teste" ,;
SQL_NO_WARNING ,;
"MYSQL" )

if SQLErrorNO() > 0 // verificando erro de conexao
? "Erro - Banco!!!!!"
endif

cSql := "insert into clientes( nome, sobrenome ) values( 'William', 'Gates III' )"

SQLLIB_ExecSQL( nConn, cSql )

if SQLErrorNO() > 0 // verificando erro na execucao do comando
? "Erro - Banco!!!!!"
endif


// verifica que o registro foi "inserido":

cSql := "select nome, sobrenome from clientes"

USE SQL cSql ALIAS CLIENTES VIA "MYSQL"

browse()

De fato o registro é mostrado no browse, mas NÃO está FISICAMENTE no Banco, só há o commit na saída da aplicação. Ou seja, provavelmente é uma transação pendente. Só que eu tentei comitar também explicitamente e continua com o mesmo comportamento.

Alguém conhece essa LIB e poderia ajudar? Agradeço antecipadamente.

Abraços.
Lucio Faria
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

Após qualquer comando SQL como insert, update voce deve executar o comando COMMIT.

Como não conheço a sintaxe da SQLLIB sugiro voce analisar os codigos de exemplo e ver algo em relação a isto.

Nos programas que uso para tratar BDs SQL alguns necessitam que o comando tenha uma terminação com o caracter ";"

insert ... ;
commit;

Verifique se isto não é necessário.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Lucio Faria
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 04 Dez 2006 11:34

Re: xHarbour com SQL LIB - dúvidas

Mensagem por Lucio Faria »

Pois é amiguinho, e como eu tinha dito:
Lucio Faria escreveu:(...) eu tentei comitar também explicitamente e continua com o mesmo comportamento.
A SQL LIB tem a função sqlcommit(), foi a que usei.
Lucio Faria
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

Voce tentou algo assim:

cSql := "insert into clientes( nome, sobrenome ) values( 'William', 'Gates III' );commit"
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Lucio Faria
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 04 Dez 2006 11:34

Mensagem por Lucio Faria »

Amiguinho,

é isso mesmo, é bug na função da SQL LIB.

Muito obrigado, valeu mesmo.
Lucio Faria
Responder