none
Cadena de conección en Archivo de recursos RRS feed

  • Pregunta

  • Hola a todo el grupo de MSDN

    Tengo en mi proyecto, las cadenas para la consulta a la base de datos de Sql Server hechas, más no he podido saber como diseñar esta consulta:

    INSERT INTO Servidores (Red,Localizacion) VALUES('T',+ "'" + cboNombre.Text.Trim() + "'")

    En C# me funciona bien, pero si la guardo en una cadena de archivo de recursos no me reconoce + "'" + cboNombre.Text.Trim() + "'".

    Da error en el signo + y subsecuentes literales.

    Alguien de ustede me podría orientar ?

    Gracias


    miércoles, 13 de junio de 2018 5:01

Todas las respuestas

  • Efectivamente, si la cadena la pones en el código fuente, la lee el compilador y "entiende" que estás haciendo una concatenación de dos strings y una variable, y genera el código ejecutable que hace esa concatenación. Pero si la cadena la pones en el archivo de recursos, es simplemente un string y ya está. En tiempo de ejecución se recupera el string, y no existe nada de código que sepa interpretarlo e inferir que una parte de ese string contiene una variable que hay que concatenar. Al pasárselo al Command da un error en todas las partes que éste no entiende.

    La solución "chapucera" es hacer una llamada a .Replace(..., ...) cuando recuperes la cadena para sustituir las variables.

    La solución elegante y recomendable (recomendable en todos los casos, incluso aunque no salves la cadena en los recursos) es parametrizar la sentencia y luego agregar los parámetros en el Command. Sobre este tema de parametrizar las sentencias SQL se han vertido ríos de tinta y hay miles y miles de mensajes, ejemplos y tutoriales que lo enseñan, así que no te pongo un ejemplo.

    miércoles, 13 de junio de 2018 5:51
  • Gracias Alberto, por responder

    Entonces, según te entiendo la forma más viable, es reemplazar las variables con Replace en la función que conecta con la base de datos, o en el Command, pero en el Command sería más complicado

    Voy a probar lo que tu dices.

    Si hay alguien que tenga más opiniones, les agradezco si las publican.

    Gracias

    miércoles, 13 de junio de 2018 19:09