Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

301
Visualizações
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...

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

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

over 4 years ago · Santiago Trujillo Relatório

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á.

over 4 years ago · Santiago Trujillo Relatório

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; } }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda