使用update命令将datatable vb.net更新为mysql并且非常慢

时间:2017-06-17 17:51:37

标签: mysql vb.net datatable

我使用VB.net,我尝试从DataTable更新更新到MySql中的数据库,这没关系,它可以工作,但是很慢!!

详情

数据表被称为" listado"

当我发现更改时,我需要将其更改为另一个数据表,我可以看到这是非常缓慢的部分

问题

很慢,大约15分钟。 这样做的最佳方式是什么?

代码

Using conexiontemporal As New MySqlConnection(conexionstring)   
        Dim sql As String
        Dim cm As MySqlCommand
        Dim da As MySqlDataAdapter
        sql = "SELECT id, nombre, (SELECT nombre FROM categoriadeproductos WHERE id = categoria) AS categoria , cantidad, stockminimo, precio, precio2, costo, ganancia,  fecha, codigobarras FROM productos WHERE promocionid = 0 AND eliminado = 0"' AND (nombre LIKE '%"& filtro &"%')"& cate & orden
        cm = New MySqlCommand()
        cm.CommandText = sql
        cm.CommandType = CommandType.Text
        cm.Connection = conexiontemporal        
        da = New MySqlDataAdapter(cm)
        Dim actualiza As MySqlCommand
        actualiza = New MySqlCommand()
        actualiza.Connection = conexiontemporal
        actualiza.CommandText="INSERT INTO movimientostock (idproducto, razondemovimiento, cantidad, dineroanterior) Select @idnueva, 'CAMBIO DE PRECIO COSTO', @costonueva, (Select costo from productos where id = @idnueva) WHERE @costonueva <> (Select costo from productos where id = @idnueva) ;" & _
            "           INSERT INTO movimientostock (idproducto, razondemovimiento, cantidad, dineroanterior) Select @idnueva, 'CAMBIO DE PRECIO FRACCIONARIO', @precio2nueva, (Select precio2 from productos where id = @idnueva) WHERE @precio2nueva <> (Select precio2 from productos where id = @idnueva) ;" & _
            "           INSERT INTO movimientostock (idproducto, razondemovimiento, cantidad, dineroanterior) Select @idnueva, 'DINERO', @precionueva, (Select precio from productos where id = @idnueva) WHERE @precionueva <> (Select precio from productos where id = @idnueva) ;" & _
            "           INSERT INTO movimientostock (idproducto, razondemovimiento, cantidad, dineroanterior) Select @idnueva, 'CAMBIO DE GANANCIA', @ganancianueva, (Select ganancia from productos where id = @idnueva) WHERE @ganancianueva <> (Select ganancia from productos where id = @idnueva) ;" & _
            "           INSERT INTO movimientostock (idproducto, razondemovimiento, cantidad, dineroanterior) Select @idnueva, 'ENTRADA', (@cantidadnueva - (Select cantidad from productos where id = @idnueva)), (Select precio from productos where id = @idnueva) * (@cantidadnueva - (Select cantidad from productos where id = @idnueva)) WHERE @cantidadnueva > (Select cantidad from productos where id = @idnueva);" & _
            "           INSERT INTO movimientostock (idproducto, razondemovimiento, cantidad, dineroanterior) Select @idnueva, 'SALIDA', ((Select cantidad from productos where id = @idnueva) - @cantidadnueva), - ((Select precio from productos where id = @idnueva) * ((Select cantidad from productos where id = @idnueva) - @cantidadnueva)) WHERE @cantidadnueva < (Select cantidad from productos where id = @idnueva) ;" & _
            "           UPDATE productos Set categoria = (Select id FROM categoriadeproductos WHERE nombre = @nombrecategoria), cantidad = @cantidadnueva, " & _
            "           stockminimo = @stockminimonueva, precio = @precionueva, precio2 = @precio2nueva, costo = @costonueva, ganancia = @ganancianueva, codigobarras = @codigobarrasnueva, ultimamodificacion = CURRENT_TIMESTAMP WHERE id = @idnueva;"        
        actualiza.Parameters.Add("stockminimonueva", MySqlDbType.Decimal,10.2,"stockminimo")
        actualiza.Parameters.Add("cantidadnueva", MySqlDbType.Decimal,10.2,"cantidad")
        actualiza.Parameters.Add("precionueva", MySqlDbType.Decimal,10.2,"precio")
        actualiza.Parameters.Add("precio2nueva", MySqlDbType.Decimal,10.2,"precio2")
        actualiza.Parameters.Add("costonueva", MySqlDbType.Decimal,10.2,"costo")
        actualiza.Parameters.Add("ganancianueva", MySqlDbType.Decimal,10.2,"ganancia")
        actualiza.Parameters.Add("idnueva", MySqlDbType.Int32,11,"Id")
        actualiza.Parameters.Add("nombrecategoria", MySqlDbType.Text,0,"categoria")
        actualiza.Parameters.Add("codigobarrasnueva", MySqlDbType.VarChar,50,"codigobarras")
        da.UpdateCommand = actualiza
        'Dim actualiza As MySqlCommandBuilder = New MySqlCommandBuilder(da)     
        da.Update(listado)
        cm.Dispose
        da.Dispose
    End Using

谢谢!

0 个答案:

没有答案