none
leer sentencia sql desde txt en c# RRS feed

  • Pregunta

  • Hola quisiera saber como puedo leer o ejecutar sentencias sql desde un txt.

            string connstring2 = ConfigurationManager.ConnectionStrings["ConnectionString2"].ConnectionString;
            using (SqlConnection cn = new SqlConnection(connstring2))
            {

                string strSql = " SELECT        [Salespers__Purch_ Code], [Workflow E-Mail],[User ID] " +
                                " FROM            [PROD] ";
               

    SqlCommand cmd = new SqlCommand(strSql, cn);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(ds2);
                dt2 = ds2.Tables[0];
            }

    por ejemplo ese select guardarlo en un txt y almacenarlo en alguna carpeta y solo darle la ruta y que lo lea, pero tambien me generaduda en caso de que sea con parametros como se los defino si en esa instruccion ira :

     " FROM            [PROD] " +
     " WHERE        ([User ID] = UPPER(SUBSTRING('"+parametro+"', 6, 22)))";

    ayuda please


    Soy rudo (H)



    • Editado ale2323 miércoles, 30 de enero de 2013 20:21
    miércoles, 30 de enero de 2013 20:03

Todas las respuestas

  • Es muy fácil:  En vez de asignar un literal a strSql simplemente lea el archivo de texto y asigne sus contenidos a esta variable.

    ...
    string strSql = String.Empty;
    using (StreamReader sr = new StreamReader("C:\\miarchivo.sql", true))
    {
        strSql = sr.ReadToEnd();
    }
    ...

    En cuanto a parámetros el asunto se complica bastante más.  En realidad deberá usted usar la sintaxis de SQL Server para parámetros y deberá usted diferenciar entre un parámetro y una variable local pues ambos tienen la misma sintaxis.  Para esto necesitaría de una rutina convencional que analiza el texto y extrae los nombres de parámetros en el texto leído o bien una rutina no tan convencional que utilice expresiones regulares para encontrar todos los parámetros.


    Jose R. MCP
    Code Samples

    jueves, 31 de enero de 2013 5:30