Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

294
Vistas
Necesito asesoramiento sobre cómo obtener datos de una base de datos en una lista de objetos, sin saber de antemano a qué base de datos me conectaré

Estoy tratando de escribir una función en un controlador MVC C# al que puedo pasar el nombre de la tabla, el nombre del servidor, el nombre de la base de datos, el nombre de usuario y la contraseña. Esta función se llama desde una llamada Ajax, por lo que debe devolver JSON. Estoy acostumbrado a usar el marco de entidad, por lo que soy algo nuevo en esto: he estado tratando de usar SqlDataReader y luego coloco automáticamente todos los datos devueltos en una lista de objetos, que luego puedo devolver a Ajax, pero ni siquiera me estoy acercando: todos los métodos que usan SqlDataReader parecen requerir saber qué filas desea seleccionar de antemano, por lo que no tengo idea real de qué hacer o intentar a continuación. ¿Alguien tiene algún consejo sobre cómo lograr esto?

Básicamente, es para un proyecto que me encargaron en el que alguien puede completar un formulario con la cadena de conexión y la consulta sql, y los scripts irán al controlador y devolverán los datos. Luego, el usuario puede elegir qué columna (s) quiere usar, usando dc.js, crearé cualquier gráfico que elija en función de las columnas que elija, según los datos devueltos. Me está derritiendo la cabeza...

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Esto es algo que tengo en un proyecto:

 /// <summary> /// Get all of the SQL data from "tableName" using "connectionString" /// </summary> public static DataTable GetSqlDataAsDataTable(string tableName, string connectionString) { using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand cmd = new SqlCommand(string.Format("SELECT * FROM [{0}]", tableName), connection)) { cmd.CommandType = CommandType.Text; using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) { using (DataTable dt = new DataTable()) { try { sda.Fill(dt); } catch (Exception) { // handle it } return dt; } } } } }

Una vez que tenga eso, puede convertir el DT a JSON como se describe en esta otra respuesta: https://stackoverflow.com/a/17398078/4842817

about 4 years ago · Santiago Trujillo Denunciar

0

public static string GetJSON(string connectionString, string tableName) { try { SqlConnection connection = new SqlConnection(connectionString); connection.Open(); SqlCommand command = new SqlCommand($"SELECT * FROM {tableName}", connection); SqlDataAdapter adapter = new SqlDataAdapter(command); DataTable dataTable = new DataTable(); adapter.Fill(dataTable); connection.Close(); string json = Newtonsoft.Json.JsonConvert.SerializeObject(dataTable.Rows); return json; } catch { return string.Empty; } }

El código anterior requiere referencias a System.Data y System.Data.SqlClient , así como al paquete Nuget de código abierto llamado Newtonsoft.Json .

Abrirá una conexión basada en la cadena de conexión proporcionada, seleccionará todas las columnas de la tabla especificada y completará un objeto DataTable con esta información.

El método JsonConvert.SerializeObject(object) de Newtonsoft.Json serializará DataRowCollection ( dataTable.Rows ) en una cadena JSON que se devolverá.

about 4 years ago · Santiago Trujillo Denunciar

0

Usaría Dapper y Newtonsoft.Json de nuget y lo haría así:

 public string GetTableContentsAsJson(string serverName, string databaseName, string userName, string password, string tableName) { System.Data.SqlClient.SqlConnectionStringBuilder builder = new System.Data.SqlClient.SqlConnectionStringBuilder(); builder["Data Source"] = serverName; builder["integrated Security"] = false; builder["Initial Catalog"] = databaseName; builder["User ID"] = userName; builder["Password"] = password; Console.WriteLine(builder.ConnectionString); using (var connection = new SqlConnection(builder.ConnectionString)) { connection.Open(); var images = connection.Query($"SELECT * FROM {tableName}"); string s = JsonConvert.SerializeObject(images); return s; } }
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda