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
Public 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:
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 strSQLs(0) = "SET @ID=0;" strSQLs(1) = "INSERT INTO establecimiento SET Nombre=''...... strSQLs(2) = "SELECT @ID:=LAST_INSERT_ID();"