Conexão MYSQL

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
paulovirt
Usuário Nível 2
Usuário Nível 2
Mensagens: 69
Registrado em: 29 Jan 2007 10:00
Contato:

Conexão MYSQL

Mensagem por paulovirt »

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:

Código: Selecionar todos

#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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Conexão MYSQL

Mensagem por JoséQuintas »

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.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
paulovirt
Usuário Nível 2
Usuário Nível 2
Mensagens: 69
Registrado em: 29 Jan 2007 10:00
Contato:

Conexão MYSQL

Mensagem por paulovirt »

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.
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Conexão MYSQL

Mensagem por Claudio Soto »

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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Conexão MYSQL

Mensagem por JoséQuintas »

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.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
paulovirt
Usuário Nível 2
Usuário Nível 2
Mensagens: 69
Registrado em: 29 Jan 2007 10:00
Contato:

Conexão MYSQL

Mensagem por paulovirt »

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:

Código: Selecionar todos

// 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:

Código: Selecionar todos

' 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
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Conexão MYSQL

Mensagem por Claudio Soto »

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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Conexão MYSQL

Mensagem por JoséQuintas »

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/JoseQuin ... oclass.prg

Código: Selecionar todos

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.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder