Comunidad Gambas-es
Extendiendo la clase String - Chek4SQL - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forum-8.html)
+--- Tema: Extendiendo la clase String - Chek4SQL (/thread-529.html)



Extendiendo la clase String - Chek4SQL - tincho - 12-08-2021

Hola a todos.
Aquí les propongo una función que adecua un texto para que sea posible usarlo en una consulta SQL si que esta de error.
Por favor si alguien tiene una mejor idea por favor no dude en compartirla.

Código:
'' Returns a text suitable for SQL queries, removes line breaks and characters not compatible with SQL statements.

Static Public Function Chek4SQL(strInput As String) As String
 
  Dim strOutput As String
 
  strOutput = Replace(strInput, Chr(92) & Chr(110), ":")
  strOutput = Replace(strOutput, Chr(34), "")
  strOutput = Replace(strOutput, "\n", " ")
  strOutput = Replace(strOutput, "\r", "")
  strOutput = Replace(strOutput, "\x00", "")
  strOutput = Replace(strOutput, Chr(39), Chr(46))
  strOutput = Replace(strOutput, Chr(44), Chr(46))
 
  Return strOutput
 
End
Saludos.


RE: Extendiendo la clase String - Chek4SQL - Shordi - 12-08-2021

¿Es para la clausula where?... no entiendo muy bien el propósito ni el contexto de ejecución.  Huh Huh


RE: Extendiendo la clase String - Chek4SQL - tincho - 12-08-2021

(12-08-2021, 11:24)Shordi escribió: ¿Es para la clausula where?... no entiendo muy bien el propósito ni el contexto de ejecución.

Es para las consultas de inserción de registros, cuando estos tiene ciertos caracteres la "query" no funciona.
Saludos.


RE: Extendiendo la clase String - Chek4SQL - Shordi - 12-08-2021

Sin que sea mejor ni peor, sólo porque yo tengo como fobia a esas chorrileras de instrucciones iguales, lo hubiese escrito así:

Código:
Static Public Function Chek4SQL(strInput As String) As String
 
  Dim strOutput As String
  Dim aForbiden, aReplacement As New String[]
  Dim n As Integer
 
  aForbiden = [Chr(92) & Chr(110), Chr(34), "\n", "\r", "\x00", Chr(39), Chr(44)]
  aReplacement = [";", "", " ", "", "", Chr(46), Chr(46)]
  strOutput = strInput
  For n = 0 To aForbiden.Max
      strOutput = Replace(strOutput, aForbiden[n], aReplacement[n])
  Next
 
  Return strOutput
 
End

La adición posterior de caracteres inadecuados que surjan con el uso sería también más simple, creo.


Saludos.


RE: Extendiendo la clase String - Chek4SQL - tincho - 12-08-2021

(12-08-2021, 18:14)Shordi escribió: Sin que sea mejor ni peor, sólo porque yo tengo como fobia a esas chorrileras de instrucciones iguales, lo hubiese escrito así:

Si, es otra forma valida de hacerlo, pero viniendo de ti esperaba una "Collection" Smile
Saludos.


RE: Extendiendo la clase String - Chek4SQL - Shordi - 12-08-2021

(12-08-2021, 18:32)tincho escribió:
(12-08-2021, 18:14)Shordi escribió: Sin que sea mejor ni peor, sólo porque yo tengo como fobia a esas chorrileras de instrucciones iguales, lo hubiese escrito así:

Si, es otra forma valida de hacerlo, pero viniendo de ti esperaba una "Collection" Smile
Saludos.
También, también... Tongue Big Grin Big Grin Big Grin