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 originalPublic Function InsertaSQLs(ByVal strServidor As String, ByVal ParamArray strSQLS() As String) As Boolean
Dim mysqlCadena As String
Dim i As Integer
Try
mysqlCon = New MySqlConnection(strServidor)
mysqlCon.Open()
mysqlTrans = mysqlCon.BeginTransaction
For i = 0 To strSQLS.Length - 1
mysqlCadena = strSQLS(i)
If mysqlCadena IsNot Nothing Then
mysqlCmd = New MySqlCommand(mysqlCadena, mysqlCon)
With mysqlCmd
.CommandType = CommandType.Text
.Connection = mysqlCon
.Transaction = mysqlTrans
.ExecuteNonQuery()
End With
End If
Next
'Si todo sale bien se acepta
mysqlTrans.Commit()
binsertaSQLs = True
Catch ex As MySqlException
binsertaSQLs = False
mysqlTrans.Rollback()
logsherr.WriteLog("HerrNet_Datos", "binsertaSQLs", ex.Number, ex.Message)
Catch ex As Exception
binsertaSQLs = False
mysqlTrans.Rollback()
logsherr.WriteLog("HerrNet_Datos", "bInsertaSQLs", Err.Number, ex.Message)
Finally
If Not mysqlCon Is Nothing Then
If mysqlCon.State = ConnectionState.Open Then
mysqlCon.Close()
End If
mysqlCon.Dispose()
End If
If Not mysqlTrans Is Nothing Then
mysqlTrans.Dispose()
End If
End Try
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