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.
Acessar MYSQL em outra porta # 3306
Moderador: Moderadores
ACESSAR MYSQL EM OUTRA PORTA # 3306
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.
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.
ACESSAR MYSQL EM OUTRA PORTA # 3306
Legal... parabéns...
Poderia disponibilizar trecho do código como exemplo?
[]´s
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”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“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”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
ACESSAR MYSQL EM OUTRA PORTA # 3306
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.
Posso sim. A propósito, como é que o pessoal inclui os programas ? Tenho visto no fórum mas ainda não descobri como fazer.
ACESSAR MYSQL EM OUTRA PORTA # 3306
Olá, já descobri como postar o código.
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
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
Código: Selecionar todos
********************************************************************************
* 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
