[firebase-br] Conexão

Reijanio Nunes Ribeiro rnribeiro em gmail.com
Qua Abr 29 09:47:01 -03 2009


achei interessante dei uma googada e vi isso, da uma olhada nesse site
http://www.vfpbrasil.com.br/modules/newbb/viewtopic.php?topic_id=3973&forum=10
no topico de um usuario chamado iceman que diz assim

Bom kra ainda ficou meio vago, mas vamos ver se consigo te ajudar.

Como eu não sei até onde vc conseguiu ir, vou pelo começo.

Toda conexão a BD q não seja nativa do vfp(DBF, DBC), vai ter q ser feita
via ODBC ou API, DLL do banco de dados em questão (como por exemplo o
Postgree, ele tem alem do driver ODBC uma DLL, que depois de declarada no
sistema, pode-se usar as funcoes para manipular o BD), voltando ao Firebird,
acredito q vc tenha instalado junto com o servidor o driver ODBC, caso nao
tenha instalado vc vai precisar instala-lo.

Estando o Banco de dados e o driver ODBC instalado, vc pode precisar ainda
criar o DSN (Data Source Name) para conexão com BD, eu particularmente
prefiro criar uma String de conexão. Independente da escolha, vc tem duas
maneiras para manipular os dados:
- Uma por "Passagem", com as funções SQLCONNECT() ou SQLSTRINGCONNECT,
SQLEXEC(), SQLDISCONNECT(), onde essas funções executam os comandos SQL do
BD no Servidor;
- A outra criando a conexão com CREATE CONNECTION, e manipulando os dados
com VIEWS, através do CREATE SQL VIEW ou com cursores.

[b:1033abf902]Um exemplo basico e simples usando a tecnologia de passagem
SQL seria:[/b:1033abf902]

Praparo a variavel com dados para conexao ao BD:
[b:1033abf902]driver[/b:1033abf902] -> é o nome do banco de dados q vc quer
usar, esse nome tem q ser o mesmo q esta intalado no Administrador de Fontes
de dados ODBC do windows, no exemplo estou com o driver ODBC do Firebird
versão 2.00.00.130, instalado;
[b:1033abf902]server[/b:1033abf902] -> é o nome do servidor q está instalado
o banco de dados, pode localhost no meu caso, ou nome/ip da maquina remota q
vc prentende acessar;
[b:1033abf902]uid[/b:1033abf902] -> é o nome do login do usuário q vc criou
no BD;
[b:1033abf902]pwd[/b:1033abf902] -> senha do usuário;
[b:1033abf902]database[/b:1033abf902] -> nome do bd no servidor.

Obs.: Em todos bd q mexi (MySql, PostGre, Oracle, SQLServer), os dados como
UID, PWD e DATABASE, costumam ser casesensitive.

[code:1:1033abf902]lcStringDeConexao = "driver=Firebird/InterBase(r) driver"
+;
";server=localhost" +;
";uid=LoginUsuario" +;
";pwd=SenhaDoUsuario" +;
";database=NomeDoBancoDeDados"[/code:1:1033abf902]

Depois conecto com a função:

[code:1:1033abf902]lnConnHandle =
SQLSTRINGCONNECT(m.lcStringDeConexao)[/code:1:1033abf902]

Imaginemos q vc tem uma tabela de clientes no bd e vc vai fazer uma
consulta:

[code:1:1033abf902]SQLEXEC(lnConnHandle,"SELECT * FROM clientes",
"CursorResultado")[/code:1:1033abf902]

Se vc não especificar CursorResultado ele cria automaticamente um cusor de
nome SQLRESULT.
Outra coisa, é q os comandos executados dentro da função SQLEXEC(), seguem a
sintaxe do servidor de BD, e não do VFP, ou seja, os comandos de INSERT,
UPDATE, DROP entre outros, vão seguir a sintaxe do manual do Firebird.

[b:1033abf902]Já com o CREATE CONNECTION:[/b:1033abf902]

Na tecnologia por passagem vc não depende de arquivos locais, no entanto com
CREATE CONNECTION vc deverá ter criado ou aberto um BD nativo do fox para
guardar as informações da conexões e views.

Aproveitando a mesma String de conexão acima, vc criaria a conexão dessa
forma:

[code:1:1033abf902]CREATE CONNECTION firebird_bd CONNSTRING
lcStringDeConexao[/code:1:1033abf902]

Criada a conexão com sucesso vc vai perceber q ele adicionou um item ao seu
projeto, na guia DATA em CONNECTIONS. Vc tbem poderia ter criado a conexão
pelo projeto.

Com a conexão criada vc pode manipular os dados do BD com a criação de
Views, com CREATE SQL VIEW.



Em ambos os casos, vc tem funções auxiliares como o CURSORGETPROP() e
CURSORSETPROP() para manipular como os dados serão atualizados no servidor.
Como eu te falei antes, eu ainda sou meio cabaço, não sei te dizer se com os
cursores criados com a tecnologia de passagem os dados podem ser atualizadas
automaticamente como no caso das VIEWs.

Quando eu usava a tecnologia de passagem eu fazia tudo via codigo, e era
mais para atualização de dado na WEB, eu usava alguns INSERTs, DELETEs,
UPDATEs, DROPs, mas fiz nenhum teste com os SQLRESULT q retornavam com
respeito a atualização dos dados, talvez alguem q leia esse topico possa
falar mais sobre isso do q eu, ou é uma questao de testar e ver o q
acontece...rs

Já com a criação da conexão e das view tenho obtido melhores resultados,
pois vc faz alguns acertos de propriedades nos cursores q a atualização dos
dados ficam mais automaticas, dependendo menos de codigos e mais do bd.

Outra coisa é q todos os dados do tipo caracter q vc enviar ao servidor,
será necessário vc limpar o caracter aspas simples, como por exemplo: Santa
Barbara D'Oeste, essa aspa simples ou apóstrofo, o servidor do bd pode
interpretar de outra maneira, geralmente servidores de banco de dados nao
aceitam aspas duplas.



Bom ficou quase um livro, mas espero o q ajude no q precisa, desculpe se
detalhei d+, mas sem saber o problema especificamente fica complicado
explicar algo....sem contar q isso ai acima, foi veridico...hehe, tipow
apanhei pra caramba pra chegar onde cheguei e pior de tudo, sozinho com
gente te enchendo o saco q quer pra ontem....hehehe

[]'s
t+

 Enviado em: 2006/7/8 17:01


2009/4/28 ARNOPAZ-FUTURA Informatica/Locadora/LanHouse <futura1999 em gmail.com
>

> Boa tarde.
>
> Alguém sabe como criar o tal datasource para conectar o banco no VFP ??
> Estou usando a seguinte conexão:
>
>
> SQLSTRINGCONNECT("User=SYSDBA;Password=masterkey;Database=e:\futura.fdb;DataSource=localhost;Port=3050;Dialect=3;")
>
>
> --
> Arno R. da Paz
> FUTURA - Informática e LanHouse
> Tres Cachoeiras/RS
> ----------------------------------------------------------------------
> Gl 2,20 "Já estou crucificado com Cristo; e vivo, não mais eu, mas Cristo
> vive em mim; e a vida que agora vivo na carne, vivo-a na fé do Filho de
> Deus, o qual me amou, e se entregou a si mesmo por mim."
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista