none
Consulta personalizada RRS feed

  • Pregunta

  • Hola, me encuentro desarrollando una aplicacion MVC en c#, quisiera saber si hay alguna de manera de crear una consulta al ingresar yo el nombre de la tabla de la que quiero hacer una consulta. 

    Algo asi:

    string sql = "SELECT CAMPO FROM" + var + " " ;

    Saludos.


    Luis

    martes, 9 de julio de 2019 0:56

Respuestas

  • Hola Luis:

    Pero ¿Cuál es la tecnología de acceso a datos, que estas usando?

    También tienes que tener en cuenta, que eso parte, puede suponer un peligro importante. Utilizar consultas dinámicas contra la base de datos en código servidor, puede presentar un problema grave de seguridad por inyección sql.

    Si lo vas a realizar, utiliza siempre parámetros.

    https://matiaslopezdev.wordpress.com/2014/12/04/ado-net-buenas-practicas-en-el-acceso-a-datos/

    Execute Dinamic TSQL in Ado.Net

    Execute SQL in EntityFramework

    • Marcado como respuesta LuisFSantiago martes, 9 de julio de 2019 16:19
    martes, 9 de julio de 2019 4:01
  • hola

    >>quisiera saber si hay alguna de manera de crear una consulta al ingresar yo el nombre de la tabla de la que quiero hacer una consulta

    la forma en que lo planteas es la correcta, se une en un string el nombre de la tabla

    string nombreTabla = "<NombreTabla>";
    
    DataTable dt = new DataTable();  
    using (SqlConnection conn = new SqlConnection("connection string"))  
    {  
        string query = string.Format("select * from {0}", nombreTabla);  
        SqlCommand cmd = new SqlCommand(query, conn);  
    
        SqlDataAdapter da = new SqlDataAdapter(cmd);    
        da.Fill(dt);  
    } 

    aunque no es una buena practica, se supone que deberias tener una capa de datos donde definas queries para cada tabla y puedas aplicar filtros

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta LuisFSantiago martes, 9 de julio de 2019 16:19
    martes, 9 de julio de 2019 5:18

Todas las respuestas

  • Hola Luis:

    Pero ¿Cuál es la tecnología de acceso a datos, que estas usando?

    También tienes que tener en cuenta, que eso parte, puede suponer un peligro importante. Utilizar consultas dinámicas contra la base de datos en código servidor, puede presentar un problema grave de seguridad por inyección sql.

    Si lo vas a realizar, utiliza siempre parámetros.

    https://matiaslopezdev.wordpress.com/2014/12/04/ado-net-buenas-practicas-en-el-acceso-a-datos/

    Execute Dinamic TSQL in Ado.Net

    Execute SQL in EntityFramework

    • Marcado como respuesta LuisFSantiago martes, 9 de julio de 2019 16:19
    martes, 9 de julio de 2019 4:01
  • hola

    >>quisiera saber si hay alguna de manera de crear una consulta al ingresar yo el nombre de la tabla de la que quiero hacer una consulta

    la forma en que lo planteas es la correcta, se une en un string el nombre de la tabla

    string nombreTabla = "<NombreTabla>";
    
    DataTable dt = new DataTable();  
    using (SqlConnection conn = new SqlConnection("connection string"))  
    {  
        string query = string.Format("select * from {0}", nombreTabla);  
        SqlCommand cmd = new SqlCommand(query, conn);  
    
        SqlDataAdapter da = new SqlDataAdapter(cmd);    
        da.Fill(dt);  
    } 

    aunque no es una buena practica, se supone que deberias tener una capa de datos donde definas queries para cada tabla y puedas aplicar filtros

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta LuisFSantiago martes, 9 de julio de 2019 16:19
    martes, 9 de julio de 2019 5:18
  • Gracias, leí el articulo que adjuntas me pareció muy interesante y por ende me hizo ver varios errores que estoy cometiendo intentare corregirlos y después retomare el caso.

    Saludos.


    Luis

    • Marcado como respuesta LuisFSantiago martes, 9 de julio de 2019 16:17
    • Desmarcado como respuesta LuisFSantiago martes, 9 de julio de 2019 16:19
    martes, 9 de julio de 2019 16:17
  • Ya veo, gracias algo asi tenia pensado manejar pero imagine que seria mas codigo, intentare de las dos maneras.

    Gracias.


    Luis

    martes, 9 de julio de 2019 16:19