none
insertar lista generica en sql RRS feed

  • Pregunta

  • public List<string> GetLista() { List<string> lista = new List<string>(); using (SqlConnection conn = new SqlConnection("connection string")) { conn.Open(); string strcmd = "SELECT nombrecampo from Tabla WHERE"; SqlCommand cmd = new SqlCommand(strcmd, conn); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { lista.Add(Convert.ToString(reader["nombrecampo"])) } } return lista; }

    ASI OBTENGO LOS DATOS DE UNA BASE DE DATOS EN UNA LISTA>

    COMO HARIA PARA HACERLO AL REVES?

    ES DECIR PARA INSERTARLOS DESDE LA LISTA A LA BD

    jueves, 26 de julio de 2018 3:18

Todas las respuestas

  • No hay ninguna instrucción que grabe la lista "de golpe". Necesitarás un bucle que recorra toda la lista y a cada iteración inserte uno por uno los datos. Ten presente que, así como al leer podías leer uno solo de los datos del registro y pasarlo a la lista, en cambio al grabar es necesario dar valores a todas las columnas del registro que lo requieran. No puedes insertar una sola a no ser que todas las demás admitan NULL. Suponiendo que efectivamente tu tabla no requiera ninguna otra columna, podrías grabar así:

    public void GrabarLista(List<string> lista)
    {
    	using (SqlConnection conn = new SqlConnection("connection string")) {
    		conn.Open();
    
    		string strcmd = "Insert into Tabla VALUES(@nombrecampo)";
    		SqlCommand cmd = new SqlCommand(strcmd, conn);
                    SqlParameter parm = new SqlParameter("@nombrecampo", SqlDbType.TipoDelCampo, longitudDelCampo);
                    cmd.Parameters.Add(parm);
                    foreach(string valor in lista)
                    {
    		    param.Value = valor;
                        cmd.ExecuteNonQuery();
    		}
    	}
    }

    jueves, 26 de julio de 2018 5:54
    Moderador
  • hola

    Bulk Insert from Generic List into SQL Server with minimum lines of code

    podrias evaluar usar el SqlBulkCopy pero como veras termina convirtiendo la lista en datatable

    quizas iterar por cada item he ir insertando sea lo mas controlado para la operacion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 26 de julio de 2018 17:05