none
Guardar DataTable en tabla MYSQL RRS feed

  • Pregunta

  • Buenas Noches

    Tengo el siguiente caso:

    DataTable dt1 = new DataTable(); using (MySqlConnection cn = new MySqlConnection(CadenaConexionNAV)) { using (MySqlCommand cmd = new MySqlCommand()) { cmd.Connection = cn; cn.Open(); string query1 = @"Select pd.pedidokey, pd.codigo, pd.bianhao, pd.jianshu, pd.zongshuliang, pd.name, (pd.zongshuliang * pd.precio) * (100 - pd.des)/100 as Importe from txgl.pedidomov pd where pd.pedidokey = @pedidokey group by pd.codigo order by n.ubicacion"; cmd.Connection = cn; cmd.CommandType = System.Data.CommandType.Text; cmd.CommandTimeout = 300; cmd.Parameters.AddWithValue("@pedidokey", pedidokey); cmd.CommandType = CommandType.Text; cmd.CommandText = query1; MySqlDataAdapter da = new MySqlDataAdapter(query1, CadenaConexionNAV); da.SelectCommand = cmd; da.Fill(dt1);

    En dt1 tengo guardado la consulta ahora necesito guardar ese datatable en Mysql

    Como puedo hacer?

    Saludos


    ruben

    lunes, 6 de abril de 2020 22:20

Todas las respuestas

  • Hola Ruben, 

      

    Gracias por levantar tu consulta en los foros de MSDN. Entendimos su pregunta y vamos a darle seguimiento para buscar la mejor repuesta pertinente al caso. 

      

    Cualquier duda referente a productos Microsoft, puedes consultarnos. Es un gusto informarte. 

    Gracias por usar los foros de MSDN. 

      

      

    Eric Ruiz

     ____________________________ 

      

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    lunes, 6 de abril de 2020 23:26
    Moderador
  • Para guardarlo, lo primero tienes que construir un MySqlDataAdapter que tenga los comandos de grabación (no solo el de lectura). Esto se puede automatizar con un MySqlCommandBuilder, pero requiere que la "select" sea simple y únicamente contenga las columnas de la tabla de destino, sin campos calculados. Después, con ese data adapter, llamas al método Update para grabar el datatable:

    string query2 = @"Select * from tablaDestino";
    MySqlDataAdapter da2 = new MySqlDataAdapter(query2, cn);
    MySqlCommandBuilder scb = new MySqlCommandBuilder(da2);
    da2.Update(dt1);
    
    

    Esto solo graba si hay cambios en dt1. Si está recién cargada con un data adapter y no has modificado los valores, entonces no se graba nada. Si necesitas forzar a que se grabe, puedes usar un bucle para cambiar el RowState de cada fila a "new" (si hay que insertarlas en destino) o "modified" (si ya existen en destino y hay que modificarlas).

    martes, 7 de abril de 2020 6:39
    Moderador