sustituir campos en tiempo de ejecución

aibarguen
24 de Diciembre del 2004
Tengo un fichero XML con la configuración de un select. Es decir, tengo una clase llamada VI, y dentro tengo varios campos (idVi, nombre,SQLcommand...). Y claro necesito hacer un select generico, que en tiempo de ejecución reemplace esos valores. Es decir tendre en un XML el siguiente SQL

"select * from tables where idVi="+VI.idVI+"";

Es decir que en tiempo de ejecucion , me abrira el fichero xml y leera esa linea y la insertara en el campo SQLcommand. Pero claro, como es en tiempo de ejecucion me cargara el string tal cual, sin reemplazarme el campo idVI. Como lo puedo hacer? reflection?

elph
24 de Diciembre del 2004
Buenas,
Reflexion podria ser una solución pero creo que demasiado compleja para lo que quieres. Podrias usar parametros en la consulta sql de la siguiente manera:
Primero en el xml yo guardaria algo parecido a :
select * from table where [email protected]
i en el codigo:
//creamos la conexion
SqlConnection conn = new SqlConnection("cadena de conexion");
//creamos el command con la sentencia sql
SqlCommand cmd = new SqlCommand("select * from table where [email protected]");
//creamos un parametro, le damos un nombre i definimos el tipo
SqlParameter param = new SqlParameter("@id",System.Data.SqlDbType.Int);
//le asignamos el valor que tendra
param.Value = VALOR

El funcionamiento de lso parametros es parecido al de las stored procedures de sql server. Lo que hara es reemplazar el @id por el valor entrado. Ademas, si hubiera algun intento de sqlinjection, haciendolo con parametros se evitaria automaticamente, ya que escapa automaticamente los caracteres peligrosos.

Suerte