Clipper On Line • Ver Tópico - Conexão MYSQL

Conexão MYSQL

Discussão sobre SQL

Moderador: Moderadores

 

Conexão MYSQL

Mensagempor paulovirt » 29 Jan 2018 08:07

Caros amigos

Estou em processo de migração, do bom e velho DBF para o Mysql, no meu sistema xharbour.

Já consegui estabelecer a conexão com sucesso e executar as principais tarefas (listar, incluir, editar, excluir, etc...), porém estou esbarrando em algo bem simples: testar se o Mysql está em execução.

Minha conexão acontece dessa forma:

#include 'adodb.ch'

public conexao

** MODELO DE CONEXAO LOCAL

oConexao:=CreateObject("ADODB.Connection")

oConexao:open("DRIVER={MySQL ODBC 3.51 Driver};" + ;
                            "server=localhost" + ;
                            ";database=BANCO_DE_DADOS" + ;
                            ";uid=root" + ;
                            ";pwd=")

oCursor:=CreateObject("ADODB.Recordset")



Conto com a ajuda

Grato!

Paulo
Avatar de usuário

paulovirt
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 67
Data de registro: 29 Jan 2007 09:00
Curtiu: 2 vezes
Mens.Curtidas: 0 vez

Conexão MYSQL

Mensagempor JoséQuintas » 29 Jan 2018 10:41

Não entendi.
Se abriu a conexão, está tudo ok.

Também não entendi pra que o ADODB.Recordset.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9207
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 532 vezes

Conexão MYSQL

Mensagempor paulovirt » 29 Jan 2018 13:56

Sim, a conexão está funcionando perfeitamente. Mas gostaria de fazer um tratamento de erro, caso por algum momento o servidor de dados esteja fora. Eu costumo fazer isso quando uso PHP, mas no xharbour não consegui.
Avatar de usuário

paulovirt
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 67
Data de registro: 29 Jan 2007 09:00
Curtiu: 2 vezes
Mens.Curtidas: 0 vez

Conexão MYSQL

Mensagempor Claudio Soto » 29 Jan 2018 18:01

No utilizo MySQL pero tal vez pueda ser de ayuda:

http://www.vbforums.com/showthread.php? ... pen-closed
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar de usuário

Claudio Soto
Colaborador

Colaborador
 
Mensagens: 451
Data de registro: 27 Ago 2012 12:31
Cidade/Estado: Uruguay
Curtiu: 33 vezes
Mens.Curtidas: 131 vezes

Conexão MYSQL

Mensagempor JoséQuintas » 29 Jan 2018 20:59

A intenção é trocar a mensagem de erro do mysql por uma mensagem de erro pessoal.... sei lá... parece perda de tempo.

Mas tratamento de erro no Harbour é BEGIN SEQUENCE/RECOVER/ENDSEQUENCE.

Não sei porque o pessoal costuma usar esse ODBC 3.51.
Ele é problemático, dá erros em comandos que não acontecem com as versões mais novas.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9207
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 532 vezes

Conexão MYSQL

Mensagempor paulovirt » 30 Jan 2018 20:49

Caro José

Eu uso esse ODBC porque o mais moderno 5.1.8 não funcionou de forma alguma, então usei esta, 3.51.

Essa forma de conexão, usando o adodb.recordset foi a que consegui no xharbour. Se tiver alguma outra mais interessante e puder postar por aqui eu agradeço.

Sobre a mensagem de erro, eu gostaria porque costumo usar quando programo com PHP ou ASP. Como meus clientes usam meu sistema (no momento ainda no bom e velho DBF) ficaria mais fácil entender se por algum motivo o servidor está fora, considerando inclusive a possibilidade de conectar via web.

Em PHP, faço dessa forma:

// CONEXAO LOCAL
$conexao = mysql_connect("localhost","root","");

if (!$conexao)
header("Location: erro.htm");

// CONEXAO AO BANCO DE DADOS
$banco = mysql_select_db("banco_de_dados",$conexao);

if (!$banco)
// DIRECIONA A UMA PAGINA HTML DE ERRO
header("Location: erro.htm");



...e em ASP, faço assim:

' MODELO DE CONEXAO COM MYSQL LOCALHOST
set conexao=Server.createObject("ADODB.connection")
conexao.Open = "Driver=MySQL ODBC 5.1 Driver; DATABASE=banco_de_dados; SERVER=localhost; UID=root; PASSWORD=;"

set RS = Server.CreateObject("ADODB.Recordset")
RS.open "SELECT * FROM tabela",conexao
RS.close
set RS = nothing
' DIRECIONA PAGINA DE ERRO, CASO NAO OCORRA A CONEXAO
if Err.number <> 0 then
response.Redirect("erroserver.htm")
response.end()
end if

%>


Grato!

Paulo
Avatar de usuário

paulovirt
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 67
Data de registro: 29 Jan 2007 09:00
Curtiu: 2 vezes
Mens.Curtidas: 0 vez

Conexão MYSQL

Mensagempor Claudio Soto » 30 Jan 2018 22:47

Claudio Soto escreveu:No utilizo MySQL pero tal vez pueda ser de ayuda:

http://www.vbforums.com/showthread.php? ... pen-closed


Por lo que aparece en la página sería algo así como:

if oConexao == "NIL o 0 ???" .or.
oConexao:State != adStateOpen
// error apertura
endif
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar de usuário

Claudio Soto
Colaborador

Colaborador
 
Mensagens: 451
Data de registro: 27 Ago 2012 12:31
Cidade/Estado: Uruguay
Curtiu: 33 vezes
Mens.Curtidas: 131 vezes

Conexão MYSQL

Mensagempor JoséQuintas » 30 Jan 2018 23:33

Não sei porque o MySQL fez a cagada de usar software Microsoft para os ODBCs mais novos.
Se não me engano, o ODBC 5.1 exige run-time do MSVC 2010, e o ODBC 5.3 exige run-time do MSVC 2013.

https://github.com/JoseQuintas/JoseQuintas/blob/master/source/ze_adoclass.prg

FUNCTION MySqlConnection( cServer, cDatabase, cUser, cPassword, nPort, nVersion )

   LOCAL cnConnection

   hb_Default( @nPort, 3306 )
   hb_Default( @nVersion, AppODBCMySql() )

   cnConnection:= win_OleCreateObject( "ADODB.Connection" )
   cnConnection:ConnectionString := "Driver={MySQL ODBC " + iif( nVersion == 3, "3.51", "5.3 ANSI" ) + " Driver};Server=" + cServer + ";" + "Port=" + Ltrim( Str( nPort ) ) + ;
      ";Stmt=;Database=" + cDatabase + ";User=" + cUser + ";Password=" + cPassword + ";Collation=latin1;" + ;
      "AUTO_RECONNECT=1;COMPRESSED_PROTO=0;PAD_SPACE=1" // usando compactação impede certas checagens // Option=131072;
   cnConnection:CursorLocation    := AD_USE_CLIENT
   cnConnection:CommandTimeOut    := 600 // seconds
   cnConnection:ConnectionTimeOut := 600 // seconds

   RETURN cnConnection
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9207
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 532 vezes




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro