Resultado diferente Hb_Md5 x Md5 (Mysql)
Moderador: Moderadores
Resultado diferente Hb_Md5 x Md5 (Mysql)
Pq a diferença? Ou como fazer pra serem iguais?
Harbour
Select Produto
DbSetOrder(1)
DbGoTop()
CodMd5 = Hb_Md5( Str(CODIGO) + CODBAR + DESCRI )
Resultado = 3e3d66713b697f0c1dafbe4f87017eeb
MySql
SELECT MD5(CODIGO + CODBAR + DESCRI) from a03prd where codigo=1
Resultado = 732413127680b53a739bf0c561d63afa
Harbour
Select Produto
DbSetOrder(1)
DbGoTop()
CodMd5 = Hb_Md5( Str(CODIGO) + CODBAR + DESCRI )
Resultado = 3e3d66713b697f0c1dafbe4f87017eeb
MySql
SELECT MD5(CODIGO + CODBAR + DESCRI) from a03prd where codigo=1
Resultado = 732413127680b53a739bf0c561d63afa
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Resultado diferente Hb_Md5 x Md5 (Mysql)
Sem analisar muito a fundo, pra retornar o mesmo código MD5 os conteúdios passados para função tem q ser idênticos, ou seja... vamos analisar um trecho do código...
Então voltando ao início, vc tem q ter certeza q o contéudo passado para as funções q geram o MD5 são exatamente identicos...Harbour
//----------------> Aki subentendemos q por estar setado dbSetOrder(1) e depois dbGoTop() seja o índice q em ordem de código e estamos no código 1 tb... // agora vc conferiu se na tabela é este o primeiro registro deste índice?
CodMd5 = Hb_Md5( Str(CODIGO) ) //--> Outro detalhe, q considero onde possívelmente esteja a diferença, observe q vc transformou o campo numérico para Caracter e isso faz com q sejam adicionados espaços, q serão considerados na função do MD5
MySql
SELECT MD5(CODIGO) from a03prd where codigo=1 //--> Aki vc esta definindo q as informações são referentes ao código 1... ok, agora qual o tipo do campo Codigo aki? Caracter?
Código: Selecionar todos
MD5 de " 1" vai gerar um MD5 diferente de "1"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.
Resultado diferente Hb_Md5 x Md5 (Mysql)
Fladimir,
A diferença parece estar mesmo na transformação de campo NUMERICO em CARACTERE.
hb_md5( AllTrim(Str(CODIGO)) )
deu o mesmo resultado de
SELECT MD5(CODIGO)
A diferença parece estar mesmo na transformação de campo NUMERICO em CARACTERE.
hb_md5( AllTrim(Str(CODIGO)) )
deu o mesmo resultado de
SELECT MD5(CODIGO)
Resultado diferente Hb_Md5 x Md5 (Mysql)
O campo codigo eh NUMERO sem casas decimais. Funcionou!
Agora estou vendo como fazer para campos que tenham casas decimais. A principio nao funcionou apenas tirando todos os espaços com AllTrim
Janio
Agora estou vendo como fazer para campos que tenham casas decimais. A principio nao funcionou apenas tirando todos os espaços com AllTrim
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Resultado diferente Hb_Md5 x Md5 (Mysql)
O negocio tá meio maluco!
SELECT MD5( '1' )
e
SELECT MD5( '1' + 'Janio' )
tem o mesmo resultado = c4ca4238a0b923820dcc509a6f75849b
SELECT MD5( '1' )
e
SELECT MD5( '1' + 'Janio' )
tem o mesmo resultado = c4ca4238a0b923820dcc509a6f75849b
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Resultado diferente Hb_Md5 x Md5 (Mysql)
Tem que usar a função CONCAT para juntar os valores
SELECT MD5( CONCAT('1' , 'Janio') )
Avançando...
Campo numerico com CASAS DECIMAIS ainda nao estou conseguindo o mesmo resultado harbour x MySql
SELECT MD5( CONCAT('1' , 'Janio') )
Avançando...
Campo numerico com CASAS DECIMAIS ainda nao estou conseguindo o mesmo resultado harbour x MySql
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Resultado diferente Hb_Md5 x Md5 (Mysql)
Tem uma função no MySQL q converte tipos, da uma pesquisada, acho q é CAST ou algo assim
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.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Resultado diferente Hb_Md5 x Md5 (Mysql)
É sempre bom definir a quantidade de casas no StrZero() ou Str() pra não ter surpresas.
Acho que o MySql tem uma funcão Format(), para formatar números, dê uma pesquisada nisso também.
Nota sobre a soma do MySQL: ele pode retirar espaços em branco extras na soma, por isso o resultado não é o esperado. CONCAT() apenas "concatena" as strings, sem alterar o conteúdo.
Acho que o MySql tem uma funcão Format(), para formatar números, dê uma pesquisada nisso também.
Nota sobre a soma do MySQL: ele pode retirar espaços em branco extras na soma, por isso o resultado não é o esperado. CONCAT() apenas "concatena" as strings, sem alterar o conteúdo.
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/
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/
Resultado diferente Hb_Md5 x Md5 (Mysql)
Ola todos,
Consegui no MySql o mesmo resultado do Harbour.
No harbour a gente "junta" valores com "+". No MySql é o CONCAT que faz isso. Essa é a primeira observação.
O outro detalhe é que tive que usar a função Trim no MySql. Campos caracteres vazios o MySql entende como " ", ou seja, com 1 espaço.
Janio
Consegui no MySql o mesmo resultado do Harbour.
No harbour a gente "junta" valores com "+". No MySql é o CONCAT que faz isso. Essa é a primeira observação.
O outro detalhe é que tive que usar a função Trim no MySql. Campos caracteres vazios o MySql entende como " ", ou seja, com 1 espaço.
Código: Selecionar todos
MD5( Concat( '&SenhaMD5', Trim(PCTALQ), codigo, Trim(codbar), Trim(descri), sldstk, stkdia, Trim(codalq), prcmer)Código: Selecionar todos
hb_md5( SenhaMD5 + AllTrim(pctalq) + AllTrim(str(codigo)) + AllTrim(CodBar) + AllTrim(Descri) + AllTrim(str(SldStk)) + AllTrim(str(StkDia)) + AllTrim(CodAlq) + AllTrim(str(PrcMer)) )fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Resultado diferente Hb_Md5 x Md5 (Mysql)
Parabéns!!!
Obrigado por compartilhar.
Obrigado por compartilhar.
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.
Resultado diferente Hb_Md5 x Md5 (Mysql)
Isso aí Fladimir!
Uso RDD Mediator que se propoe a fazer o mesmo que o SQLRdd do xHarbour. Mediator funciona que é uma maravilha e mim 'salvou' do dbf com pouquíssimas mudanças no código fonte.
No entanto, apesar de ser uma mão na roda esse tipo de rdd, em algumas situações vamos vendo que devemos abandonar o codigo xbase e usar direto os comandos sql.
Exemplo:
Codigo xBase em MySql: 30 mil produtos, 7 minutos para processamento
Codigo MySql: 30 mil produtos, 7 segundos
Uso RDD Mediator que se propoe a fazer o mesmo que o SQLRdd do xHarbour. Mediator funciona que é uma maravilha e mim 'salvou' do dbf com pouquíssimas mudanças no código fonte.
No entanto, apesar de ser uma mão na roda esse tipo de rdd, em algumas situações vamos vendo que devemos abandonar o codigo xbase e usar direto os comandos sql.
Exemplo:
Codigo xBase em MySql: 30 mil produtos, 7 minutos para processamento
Código: Selecionar todos
Select Produto
DbSetOrder(1)
DbGoTop()
Do While !Eof()
Trava()
replace STKDIA with SLDSTK
replace MD5REG with RegMd5Produtos()
DbSkip()
Enddo
Codigo MySql: 30 mil produtos, 7 segundos
Código: Selecionar todos
cQuery := [UPDATE a03prd SET STKDIA=SLDSTK, MD5REG=MD5( Concat( '&SenhaMD5', Trim(PCTALQ), codigo, Trim(codbar), Trim(descri), sldstk, stkdia, Trim(codalq), prcmer) ) ]
MedExecSql(cQuery)
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Resultado diferente Hb_Md5 x Md5 (Mysql)
Olá!
Para evitar problemas, não se esqueça de tratar os campos que retornam do banco de dados como valor NULL. Use a função IFNULL() do MySQL em seus SELECTs.
Para evitar problemas, não se esqueça de tratar os campos que retornam do banco de dados como valor NULL. Use a função IFNULL() do MySQL em seus SELECTs.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)