Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/12/2012, 22:24
Avatar de omar190
omar190
 
Fecha de Ingreso: septiembre-2008
Mensajes: 191
Antigüedad: 15 años, 7 meses
Puntos: 4
Problemas con transaccion desde VB .NET y MySQL

Que tal gente del foro, desde hace algunos dias eh tenido algunos problemas al tratar de realizar una transaccion desde una aplicacion que estoy desarrollando en visual .net 2010 y mysql, el error que me marca es Fatal error encountered during command execution. cuando trato de hacer uso de una variable de usuario algo asi SET @id=0; o SELECT @ID:=LAST_INSERT_ID();

Si omito estas instrucciones todas las demas instrucciones son insertadas correctamente, lo que trato de hacer es tras insertar la primera instruccion recuperar el id porque de este id dependen las demas sentencias de insercion, este mismo codigo lo eh usado en php y ahi no eh tenido ningun problema, este es el codigo que estoy usando para realizar la transaccion

Código vb:
Ver original
  1. Public Function InsertaSQLs(ByVal strServidor As String, ByVal ParamArray strSQLS() As String) As Boolean
  2.         Dim mysqlCadena As String
  3.         Dim i As Integer
  4.  
  5.         Try
  6.             mysqlCon = New MySqlConnection(strServidor)
  7.             mysqlCon.Open()
  8.             mysqlTrans = mysqlCon.BeginTransaction
  9.  
  10.             For i = 0 To strSQLS.Length - 1
  11.                 mysqlCadena = strSQLS(i)
  12.                 If mysqlCadena IsNot Nothing Then
  13.                     mysqlCmd = New MySqlCommand(mysqlCadena, mysqlCon)
  14.                     With mysqlCmd
  15.                         .CommandType = CommandType.Text
  16.                         .Connection = mysqlCon
  17.                         .Transaction = mysqlTrans
  18.                         .ExecuteNonQuery()
  19.                     End With
  20.                 End If
  21.             Next
  22.             'Si todo sale bien se acepta
  23.            mysqlTrans.Commit()
  24.             binsertaSQLs = True
  25.         Catch ex As MySqlException
  26.             binsertaSQLs = False
  27.             mysqlTrans.Rollback()
  28.             logsherr.WriteLog("HerrNet_Datos", "binsertaSQLs", ex.Number, ex.Message)
  29.         Catch ex As Exception
  30.             binsertaSQLs = False
  31.             mysqlTrans.Rollback()
  32.             logsherr.WriteLog("HerrNet_Datos", "bInsertaSQLs", Err.Number, ex.Message)
  33.         Finally
  34.             If Not mysqlCon Is Nothing Then
  35.                 If mysqlCon.State = ConnectionState.Open Then
  36.                     mysqlCon.Close()
  37.                 End If
  38.                 mysqlCon.Dispose()
  39.             End If
  40.             If Not mysqlTrans Is Nothing Then
  41.                 mysqlTrans.Dispose()
  42.             End If
  43.         End Try
  44.     End Function

y estas son las sentencias donde me lanza el error

Código:
strSQLs(0) = "SET @ID=0;"
strSQLs(1) = "INSERT INTO establecimiento SET Nombre=''......
strSQLs(2) = "SELECT @ID:=LAST_INSERT_ID();"
lo que estoy haciendo es definir la variable que usare, despues realizo la insercion en esta insercion el id es autoincremental es por eso que despues necesito rescatarlo ya que despues de esta insercion bienen otras donde ya no puedo hacer uso de last_insert_id porque son inserciones con autonumericos tambien, por eso necesito rescatar primero el id, espero alguie me pueda ayuda se los agradeceria