MariaDB
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
Imagine o seguinte:
INSERT INTO CLIENTE ( NOME ) VALUE ( 'RUA DALVA' )
mas o usuário digita ' ) e mais comandos no nome
INSERT INTO CLIENTE ( NOME ) VALUE ( ' ' ); DELETE FROM.... ')
Só o fato de trocar aspas simples por \' , já evita problemas desse tipo, é uma das coisas a evitar.
O problema maior não é erro na gravação, mas o usuário se aproveitar pra outras coisas.
INSERT INTO CLIENTE ( NOME ) VALUE ( 'RUA DALVA' )
mas o usuário digita ' ) e mais comandos no nome
INSERT INTO CLIENTE ( NOME ) VALUE ( ' ' ); DELETE FROM.... ')
Só o fato de trocar aspas simples por \' , já evita problemas desse tipo, é uma das coisas a evitar.
O problema maior não é erro na gravação, mas o usuário se aproveitar pra outras coisas.
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
INSERT INTO CLIENTE ( NOME ) VALUE ( '\' ); DELETE FROM....\'')
Desse jeito vai gravar as aspas (') dentro do texto, sem erro, e sem a possibilidade do usuário injetar comandos, pelo menos com aspas...
Desse jeito vai gravar as aspas (') dentro do texto, sem erro, e sem a possibilidade do usuário injetar comandos, pelo menos com aspas...
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/
MariaDB
Quintas,
Fiz a função RemoveAcentosEspeciais(), com essa função funcionou.
Funcionou também para PTISO e PT850
CASE ValType( xValue ) == "C"
xValue := AllTrim( RemoveAcento( MySqlValidString( xValue ) ) )
RemoveAcentosEspeciais( @xValue )
cSql += StringSql( xValue )
Fiz a função RemoveAcentosEspeciais(), com essa função funcionou.
Funcionou também para PTISO e PT850
CASE ValType( xValue ) == "C"
xValue := AllTrim( RemoveAcento( MySqlValidString( xValue ) ) )
RemoveAcentosEspeciais( @xValue )
cSql += StringSql( xValue )
Código: Selecionar todos
FUNCTION RemoveAcentosEspeciais( xValue )
LOCAL cLetra
FOR EACH cLetra IN xValue
DO CASE
CASE cLetra $ "abcdefghijklmnopqrstuvwxyz"
CASE cLetra $ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
CASE cLetra $ "0123456789"
CASE cLetra $ " /·,+-()"
OTHERWISE
xValue := StrTran( xValue, cLetra )
ENDCASE
NEXT
RETURN Nil
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
MariaDB
Tinha um campo com o nome Desc, deu ruim, kkk, modifiquei para DESCONTO, sistema legado tem disso.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
MariaDB
Fiz uma modificação aqui só pra ler o dbf que não foi lido por erro ou que entrou na pasta (novo), pra não ter que ler tudo novamente
Código: Selecionar todos
hTable := {}
FOR EACH oFile IN Directory( "*.DBF" )
cFile := oFile[ F_NAME ]
cFile := Substr( cFile, 1, At( ".", cFile ) - 1 )
lRead := .T.
IF Hb_FileExists( "ARQUIVO.json" )
hArquivo := {}
Hb_JSONDecode( Hb_MemoRead( "ARQUIVO.json" ), @hArquivo )
lRead := Hb_aScan( hArquivo, { |a| a["DBF"] == cFile } ) = 0
ENDIF
IF lRead
hRecord := Nil
hRecord := {=>}
hRecord["DBF"] := cFile
aAdd( hTable, hRecord )
CopyDbfToMySql( cFile, .T., .T., .T. )
cJSON := Hb_JSONEncode( hTable, .T. )
Hb_MemoWrit( "ARQUIVO.json", cJSON )
ENDIF
NEXT
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
Tive um problema estranho pra atualizar de 5.5 pra 10.x
Ao chamar a atualização, selecionar MySQL, deu erro.
Fazendo de novo, e clicando em "select all", aí marcou MySQL e funcionou.
Vai entender...
Atualizei da 5.5 pra 10.x
A única coisa que não gostei, é que os bancos continuaram na pasta 5.5, isso pode confundir.
Mas tudo certo.
Uso servidores diferentes agora, MySQL e MariaDB, minha base local é MariaDB, mas na internet é MySQL.
Como eu já disse, o mesmo conector funciona nos dois.
Agora minhas máquinas só tem MariaDB, mas conectam normalmente no MySQL da internet.
Acho que só faltou dizer uma coisa:
A instalação do MySQL tem 400MB
A instalação do MariaDB tem 50MB, e vém com HeidiSQL.
E pra quem estiver interessado, já pode trocar o ODBC pra MariaDB, mesmo que continue usando MySQL.
Ao chamar a atualização, selecionar MySQL, deu erro.
Fazendo de novo, e clicando em "select all", aí marcou MySQL e funcionou.
Vai entender...
Atualizei da 5.5 pra 10.x
A única coisa que não gostei, é que os bancos continuaram na pasta 5.5, isso pode confundir.
Mas tudo certo.
Uso servidores diferentes agora, MySQL e MariaDB, minha base local é MariaDB, mas na internet é MySQL.
Como eu já disse, o mesmo conector funciona nos dois.
Agora minhas máquinas só tem MariaDB, mas conectam normalmente no MySQL da internet.
Acho que só faltou dizer uma coisa:
A instalação do MySQL tem 400MB
A instalação do MariaDB tem 50MB, e vém com HeidiSQL.
E pra quem estiver interessado, já pode trocar o ODBC pra MariaDB, mesmo que continue usando MySQL.
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/
MariaDB
Peguntas:
O nome EMAIL é palavra reservada do MariaDB ?
Porque deu erro na criação de primary aqui:
cKeyName é IDEMAIL
cSql += " PRIMARY KEY ( " + cKeyName + " )"
Modifiquei o nome da tabela de EMAIL para XEMAI, não deu erro
O nome EMAIL é palavra reservada do MariaDB ?
Porque deu erro na criação de primary aqui:
cKeyName é IDEMAIL
cSql += " PRIMARY KEY ( " + cKeyName + " )"
Modifiquei o nome da tabela de EMAIL para XEMAI, não deu erro
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
MariaDB
Agora tem esse erro maluco:
Já tentei trocar o nome do dbf mais continua o erro.
Já tentei trocar o nome do dbf mais continua o erro.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
Faz assim:
Faz a manutenção do HeidiSQL, e dá uma olhada no código CREATE dele.
Pode renomear o nome do campo, criar índice, etc.
Depois é só olhar como ele fez o CREATE.
Uma opção que aparece no HeidiSQL:
`CODIGO` INT(11)
Faz a manutenção do HeidiSQL, e dá uma olhada no código CREATE dele.
Pode renomear o nome do campo, criar índice, etc.
Depois é só olhar como ele fez o CREATE.
Uma opção que aparece no HeidiSQL:
`CODIGO` INT(11)
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/
MariaDB
Quintas,
Descobri o problema, não tem tratamento para campo lógico.
Inclui esse código
CASE oStru[ nCont, DBS_TYPE ] == "L"
cSql += " VARCHAR( " + Ltrim( Str( oStru[ nCont, DBS_LEN ] ) ) + " ) DEFAULT 'F' "
Era esse o problema.
Foi criado também essa função para tratar o lógico
CASE ValType( xValue ) == "L"
cSql += LogicSql( xValue )
Descobri o problema, não tem tratamento para campo lógico.
Inclui esse código
CASE oStru[ nCont, DBS_TYPE ] == "L"
cSql += " VARCHAR( " + Ltrim( Str( oStru[ nCont, DBS_LEN ] ) ) + " ) DEFAULT 'F' "
Era esse o problema.
Foi criado também essa função para tratar o lógico
Código: Selecionar todos
FUNCTION LogicSql( lLogic )
LOCAL cString
Hb_Default(@lLogic, .F.)
cString := IF( lLogic, "'T'", "'F'" )
RETURN cString
cSql += LogicSql( xValue )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
Mas aí tá criando caractere.asimoes escreveu:CASE oStru[ nCont, DBS_TYPE ] == "L"
cSql += " VARCHAR( " + Ltrim( Str( oStru[ nCont, DBS_LEN ] ) ) + " ) DEFAULT 'F' "
Não seria o binary?
Vou deixar pra quando for usar, assim tiro a dúvida.
Nunca usei campo lógico, não gosto deles, mas talvez um dia use no MariaDB.
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
Achei isto, e de geralmente usarem Tiny Int
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/
MariaDB
Quintas
Vou modificar como você sugeriu
No Oracle não tem isso, o artifício e dessa forma que eu fiz, o problema é compatibilidade com os outros bancos se for migrar
Varchar é igual nos SGBD
Vou modificar como você sugeriu
No Oracle não tem isso, o artifício e dessa forma que eu fiz, o problema é compatibilidade com os outros bancos se for migrar
Varchar é igual nos SGBD
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
MariaDB
Filtro e Sort com um resultset
Pode-se ordenar um resultset ou filtrar determinado campo dele.
Ex.:
Pode-se ordenar um resultset ou filtrar determinado campo dele.
Ex.:
Código: Selecionar todos
oRs:Sort := "VENCIMENTO DESC"
oRs:Filter := "VENCIMENTO='20/02/2020'"
oRs:Filter := "VENCIMENTO >= #20/01/20#"
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
MariaDB
Só que isso é do ADO, e vale pra qualquer base de dados, até DBF.asimoes escreveu:Filtro e Sort com um resultset
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/
