none
Problemas con comillas simples en sentencia sql RRS feed

  • Pregunta

  • tengo un pequeño problema, tengo una sentencia select para buscar dentro de los registos un valor dicho valor contiene comillas simples algo asi como: pers'j23'qwerty al usar la sentencia select me da error en 'j23' ya intente hacer un Replace("'", "' '") pero no me funciona

    string query = "Select Cant From gnl Where Cod= '" + txtBox.Text.Replace("'", "''") + "'";

    Para insertar no tengo ningun problema ya que el valor ya lo tengo regstrado, el problema viene al intentar buscarlo.

    Espero me puedan ayudar.

    lunes, 24 de septiembre de 2018 16:18

Respuestas

  • Buen día

    Antes que nada, espero te encuentres bien. Por lo que veo, tu consulta la estás colocando en un string, que sospecho enviarás posteriormente con algún SqlCommand (asumiendo que usas C#).

    Permiteme presentarte primero un ejemplo de la consulta en SQL:

    

    Para indicar en MS SQL una comilla simple en una cadena y que no sea interpretado como parte del código SQL, debes agregar una comilla simple adicional. 

    Regresando a tu código C#, para encontrar la siguiente palabra pers'j23'qwerty, en código duro la sentencia quedaría así

    string query = "Select Cant From gnl Where Cod= 'pers''j23''qwerty'";



    De tal forma que al enviar esta consulta a un SqlCommand por ejemplo, no te marque error.

    Adicionalmente, permitirme recomendarte el uso de buenas prácticas al enviar consultas. Utilizar parámetros, por ejemplo utilizando SqlCommand.Parameters y SqlCommand para construir tus consultas.

    Ejemplo consultas parametrizadas

    Espero te haya sido de utilidad.

    Quedo a la espera de tus comentarios

    Un cordial saludo


    ING.ARGAMA

    • Marcado como respuesta SergioRubik lunes, 24 de septiembre de 2018 18:26
    lunes, 24 de septiembre de 2018 17:01

Todas las respuestas

  • Buen día

    Antes que nada, espero te encuentres bien. Por lo que veo, tu consulta la estás colocando en un string, que sospecho enviarás posteriormente con algún SqlCommand (asumiendo que usas C#).

    Permiteme presentarte primero un ejemplo de la consulta en SQL:

    

    Para indicar en MS SQL una comilla simple en una cadena y que no sea interpretado como parte del código SQL, debes agregar una comilla simple adicional. 

    Regresando a tu código C#, para encontrar la siguiente palabra pers'j23'qwerty, en código duro la sentencia quedaría así

    string query = "Select Cant From gnl Where Cod= 'pers''j23''qwerty'";



    De tal forma que al enviar esta consulta a un SqlCommand por ejemplo, no te marque error.

    Adicionalmente, permitirme recomendarte el uso de buenas prácticas al enviar consultas. Utilizar parámetros, por ejemplo utilizando SqlCommand.Parameters y SqlCommand para construir tus consultas.

    Ejemplo consultas parametrizadas

    Espero te haya sido de utilidad.

    Quedo a la espera de tus comentarios

    Un cordial saludo


    ING.ARGAMA

    • Marcado como respuesta SergioRubik lunes, 24 de septiembre de 2018 18:26
    lunes, 24 de septiembre de 2018 17:01
  • hola

    no deberias concatenar NUNCA los valores en un string, sino usar parametros

    algo como esto

    DataTable dt = new DataTable();  
    using (SqlConnection conn = new SqlConnection("connection string"))  
    {  
        string query = ""Select Cant From gnl Where Cod= @cod";  
    
        SqlCommand cmd = new SqlCommand(query, conn);  
        cmd.Parameters.AddWithValue("@cod", txtBox.Text);  
    
        SqlDataAdapter da = new SqlDataAdapter(cmd);    
        da.Fill(dt);  
    } 
    
    entonces no tendras problemas con las comillas

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 24 de septiembre de 2018 17:28
  • Buen día

    Antes que nada, espero te encuentres bien. Por lo que veo, tu consulta la estás colocando en un string, que sospecho enviarás posteriormente con algún SqlCommand (asumiendo que usas C#).

    Permiteme presentarte primero un ejemplo de la consulta en SQL:

    

    Para indicar en MS SQL una comilla simple en una cadena y que no sea interpretado como parte del código SQL, debes agregar una comilla simple adicional. 

    Regresando a tu código C#, para encontrar la siguiente palabra pers'j23'qwerty, en código duro la sentencia quedaría así

    string query = "Select Cant From gnl Where Cod= 'pers''j23''qwerty'";



    De tal forma que al enviar esta consulta a un SqlCommand por ejemplo, no te marque error.

    Adicionalmente, permitirme recomendarte el uso de buenas prácticas al enviar consultas. Utilizar parámetros, por ejemplo utilizando SqlCommand.Parameters y SqlCommand para construir tus consultas.

    Ejemplo consultas parametrizadas

    Espero te haya sido de utilidad.

    Quedo a la espera de tus comentarios

    Un cordial saludo


    ING.ARGAMA

    Gracias por la ayuda, espero de igual manera se encuentre bien, me ha servido de mucho su respuesta, opte por utilizar su recomendación, con el uso del SqlCommand.Parameters no tuve ningún problema todo funciona al 100% sin errores, de ante mano muchas gracias.

    Por otro lado respecto al query que me expuso efectivamente ya había leído que se necesitaban una comilla simple extra por cada una que se encuentre en la cadena, es por eso el uso del Remplace ya que el valor lo obtengo de una TextBox, pero no me funciono


    lunes, 24 de septiembre de 2018 18:27