Clipper On Line • Ver Tópico - Acessar MYSQL em outra porta # 3306

Acessar MYSQL em outra porta # 3306

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

Acessar MYSQL em outra porta # 3306

Mensagempor borisam » 21 Mar 2012 23:29

Boa noite. Algué já conseguiu acessar um servidor MySQL em porta diferente da padrão (3306) usando TMySQLServer():New( ?

Tenho um servidor atendendo na porta 3400, e o acesso normalmente através de diversas aplicações, mas não estou conseguindo via harbour. Fiz um pequeno programa de testes que funcionou bem na porta padrão mas quando altero para acessar outra porta não funciona.
Avatar de usuário

borisam
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 7
Data de registro: 12 Mar 2012 12:32
Cidade/Estado: Curitiba/Paraná
Curtiu: 1 vez
Mens.Curtidas: 0 vez

ACESSAR MYSQL EM OUTRA PORTA # 3306

Mensagempor borisam » 22 Mar 2012 14:39

Boa tarde. Apenas para informar, depois de algum trabalho de pesquisa, consegui acessar ao servidor MySQL usando a classe TMySQLServer conectando a uma porta diferente da porta padrão. Primeiramente incluí o parametro <número da porta> na chamada TMySQLServer():New(Endereço, Usuario, Senha, Porta) Em princípio não estava funcionando mas o problema não era a informação da porta e sim a senha do servidor que não estava correta. Descobri porque tentei em outro servidor cuja porta era diferente da padrão e que conectava normalmente.

Espero que esta informação ajude a mais alguém, pelo menos para atestar que o a classe funciona conforme o esperado. Agora vencido o problema inicial posso seguir no projeto.

Um abraço a todos.
Avatar de usuário

borisam
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 7
Data de registro: 12 Mar 2012 12:32
Cidade/Estado: Curitiba/Paraná
Curtiu: 1 vez
Mens.Curtidas: 0 vez

ACESSAR MYSQL EM OUTRA PORTA # 3306

Mensagempor fladimir » 23 Mar 2012 15:19

Legal... parabéns...

Poderia disponibilizar trecho do código como exemplo?

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.


Harbour 2.1.0beta2 (Rev. 15281) | Console | MSVC | DBF | CDX
Harbour 3.2 | MinGW| Xailer 3.0.1 | MySQL Nativo | Outros via ADO
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 973
Data de registro: 15 Nov 2006 20:21
Curtiu: 0 vez
Mens.Curtidas: 30 vezes

ACESSAR MYSQL EM OUTRA PORTA # 3306

Mensagempor borisam » 04 Abr 2012 22:57

Olá, desculpe a demora em responder.

Posso sim. A propósito, como é que o pessoal inclui os programas ? Tenho visto no fórum mas ainda não descobri como fazer.
Avatar de usuário

borisam
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 7
Data de registro: 12 Mar 2012 12:32
Cidade/Estado: Curitiba/Paraná
Curtiu: 1 vez
Mens.Curtidas: 0 vez

ACESSAR MYSQL EM OUTRA PORTA # 3306

Mensagempor borisam » 05 Abr 2012 14:15

Olá, já descobri como postar o código. :D

Também coloquei o código na seção de Dicas, Contribuições e tutoriais. Espero que ajude a mais alguém. uma matéria que me ajudou bastante além do exemplo da contrib foi esta : http://culikr.sites.uol.com.br/howmysql.htm

********************************************************************************
* ID       : TesteMySQL.prg                                                    *   
* OBJETIVO : Programa para testes de acesso ao MySQL com Harbour               *
* POR      : Boris A. Magaievski                                               *
* EM       : 22/03/2012 09:30                                                  *
*                                                                              *
* NOTAS : (1) Baseado na contrib do harbour e modificado para um exemplo mais  *
*             real                                                             *
*         (2) Testado para diversos servidores com portas diferentes da 3306   *
*         (3) Compilado com Harbour 3.0 na plataforma windows com BCC32 V 5.5  *
*         (4) Compilar com hbmysql.lib na pasta \hb30\lib\win\bcc              *
*         (5) Utilizada a classe TMySQL para acesso ao servidor                *
*         (6) informações sobre a classe TMySQL podem ser obtidas aqui:        *
*             http://culikr.sites.uol.com.br/howmysql.htm                      *
*                                                                              *
********************************************************************************                                                                       

#include "dbstruct.ch"
#include "inkey.ch"

STATIC oServer
STATIC oTable

procedure Main( cArg )

   LOCAL oQuery2, oRow, aStru
   LOCAL oQuery

   *****************************************************************************
   * Inclua os dados de acesso ao servidor                                     *
   * Nota : o endereço da porta é numérico                                     *
   *****************************************************************************
   
   LOCAL cServer    := '<nome ou IP do servidor>'
   LOCAL cUsuario   := '<usuario>'
   LOCAL cSenha     := '<senha>'
   LOCAl cBaseDados := '<base de dados>'
   LOCAL cTabela    := '<nome da tabela>'
   LOCAL nPorta     := 3400   
   LOCAL aTabelas   := {}

   SET CENTURY ON
   SET EPOCH TO 1960
   *****************************************************************************
   * Configurar p gina de c¢digo apropriada  para  cada  sistema  operacional  *
   * Nota : As requisições de codepage possibilitam trabalhar com vários  SOs  *
   *        e charsets pt_br ou seja, corrigem a acentua‡Æo.                   *
   *        Para p ginas de c¢digo usar PT850 ou PTISO conforme o config do SO *
   *****************************************************************************
   REQUEST HB_CODEPAGE_PTISO     
   REQUEST HB_CODEPAGE_PT850     
   Hb_LangSelect("PT")
   Hb_CdpSelect("PT850")
   *****************************************************************************
   * Configura‡Æo do ambiente do sistema                                       *
   *****************************************************************************
   SetMode(25,80)

   *******************************************************************
   * Estabelece a conexÆo com o servidor                             *
   *******************************************************************
   oServer := TMySQLServer():New( cServer, cUsuario, cSenha, nPorta )
   if oServer:NetErr()
      Alert( oServer:Error() )
      oServer:Destroy()
      return
   endif

   *******************************************************************
   * Seleciona o banco de dados                                      *
   *******************************************************************
   oServer:SelectDB( cBaseDados )
   if oServer:NetErr()
      Alert( oServer:Error() )
      oServer:Destroy()
      return
   endif
   
   *******************************************************************
   * Testando se a tabela existe na base de dados                    *
   *******************************************************************
   if ! Ascan(oServer:ListTables(), cTabela) > 0 
      Alert( 'A tabela '+cTabela+' nÆo existe nesta base de dados' )
      oServer:Destroy()
      return
   endif

   *******************************************************************
   * Selecionando dados da tabela                                    *
   * Nota : Altere a query conforme a sua base de dados              *
   *******************************************************************
   oTable := oServer:Query('SELECT CD_REPTE, NM_REPTE, DDD_1, FONE_1, '+;
                           'E_MAIL, DT_PROCESSAMENTO FROM representantes ')
   if oTable:NetErr()
      Alert( oTable:Error() )
      oServer:Destroy()
      QUIT
   endif   

   *******************************************************************
   * Navegando pelos dados da tabela                                 *
   *******************************************************************
   ? 'NAVEGANDO'
   oB := TBrowseSQL():New( 03, 01, 20, 79, oServer, oTable )
   oB:SetKey( K_CTRL_V, { | oB, nkey | DefProc( oB, nKey, cTabela ) } )
   do While .t.
           oB:ForceStable()
        if ( oB:ApplyKey( Inkey( 0 ) ) == - 1 )
           exit
      endif
      enddo

   *******************************************************************
   * Fechando a conexÆo                                              *
   *******************************************************************
   oTable:Destroy()
   oServer:Destroy()
     
return

function DefProc( ob, k, ctable )

    LOCAL op := ' '
    LOCAL orecord
    LOCAL aFDatas := Array( 6 )
    LOCAL cScreen := SaveScreen()
    LOCAL n
   
    cls
    SetColor( 'W/B,W/B+,W/R,B/W' )
    Dispbox( 00, 00, MaxRow(), MaxCol() )
    oRecord := oB:oQuery:GetBlankRow()
    for n := 1 to 6
       ? oRecord:FieldType(n)
       if oRecord:FieldType(n) = 'N'
          Afill( afDatas,0,n,1 )
       elseif oRecord:FieldType(n) = 'C'                                   
          Afill( afDatas,Space(oRecord:FieldLen(n)),n,1 )
       elseif oRecord:FieldType(n) = 'U'
          Afill( afDatas,CtoD('//'),n,1 )
       endif
    next
    inkey(0)
                                           
    @ 02,02 SAY 'CODIGO'    GET afdatas[ 1 ]
    @ 03,02 SAY 'NOME'      GET afdatas[ 2 ]
    @ 04,02 SAY 'DDD'       GET afdatas[ 3 ]
    @ 05,02 SAY 'TELEFONE'  GET afdatas[ 4 ]
    @ 06,02 SAY 'E_MAIL'    GET afdatas[ 5 ]
    @ 07,02 SAY 'DATA'      GET afdatas[ 6 ]
    READ
    @ 23,02 SAY 'Salva (S/N)?' GET op PICT "!"
    READ
    if op == "S"                                                           
       // oRecord := oB:oQuery:GetBlankRow()
       for n := 1 to 5
          oRecord:FieldPut( n, afdatas[ n ] )
       next
       oRecord:FieldPut( 6, Date() )
       oTable:Append( oRecord )
       if oTable:NetErr()
          Alert( oTable:Error() )
       endif
    endif
    RestScreen( ,,,, cScreen )
    oTable:Refresh()
    ob:RefresHall()
return( nil )

* Fim do programa
Avatar de usuário

borisam
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 7
Data de registro: 12 Mar 2012 12:32
Cidade/Estado: Curitiba/Paraná
Curtiu: 1 vez
Mens.Curtidas: 0 vez




Retornar para Banco de Dados

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