Je suis en train de créer une transaction ado.net dans IronPython dans asp.net et j'obtiens l'erreur suivante "Impossible de trouver membre Rollback"Je ne peux pas créer une transaction ado.net dans IronPython
J'ai essayé de voir ce qui est différent dans ma transaction ironpython ado.net avec une transaction vb.net ado.net mais je ne peux pas voir les différences ou trouver la raison pour laquelle on ne travaille pas et l'autre le fait. Peut-être que je ne suis pas voir quelque chose, ce sont les codes d'essai
VB.NET
Partial Class prueba
Inherits sql_conexiones
Sub bt_aceptar_click(ByVal s As Object, ByVal e As EventArgs)
Dim objTransaction As SqlTransaction
Dim conpubs As SqlConnection = New SqlConnection("Persist Security Info=False;Data Source=PABLODALMA;Initial Catalog=SistemaHYM;User ID=sa;Password=usuario;Connect Timeout=180")
Dim strUpdateA As String = "UPDATE bancos SET descripcion_banco = 'prueba' WHERE cod_banco = 1"
Dim strUpdateB As String = "UPDATE bancos SET descripcion_banco = 'pruebados' WHERE cod_banco = 1"
Dim cmdUpdateA As SqlCommand
Dim cmdUpdateB As SqlCommand
cmdUpdateA = New SqlCommand(strUpdateA, conpubs)
cmdUpdateB = New SqlCommand(strUpdateB, conpubs)
conpubs.Open()
objTransaction = conpubs.BeginTransaction
Try
cmdUpdateA.ExecuteNonQuery()
cmdUpdateB.ExecuteNonQuery()
objTransaction.Commit()
Response.Write("ok")
Catch ex As Exception
objTransaction.Rollback()
Response.Write("no ok")
Finally
conpubs.Close()
End Try
End Sub
End Class
IronPython
import clr
clr.AddReference('System.Data') # Agrega espacio de nombres Data
from System.Data import * #uso esta forma para importar o la otra?
clr.AddReference('System')
import System # Agrega espacio de nombres System
def bt_aceptar_click(sender,e):
objTransaction = System.Data.SqlClient.SqlTransaction
conpubs = System.Data.SqlClient.SqlConnection("Persist Security Info=False;Data Source=PABLODALMA;Initial Catalog=SistemaHYM;User ID=sa;Password=usuario;Connect Timeout=180")
strUpdateA = "UPDATE bancos SET descripcion_banco = 'prueba' WHERE cod_banco = 1"
strUpdateB = "UPDATE bancos SET descripcion_banco = 'pruebados' WHERE cod_banco = 1"
cmdUpdateA = System.Data.SqlClient.SqlCommand(strUpdateA, conpubs)
cmdUpdateB = System.Data.SqlClient.SqlCommand(strUpdateB, conpubs)
conpubs.Open()
objTransaction = conpubs.BeginTransaction
try:
cmdUpdateA.ExecuteNonQuery()
cmdUpdateB.ExecuteNonQuery()
objTransaction.Commit()
Response.Write("ok")
except:
objTransaction.Rollback()
Response.Write("no ok")
else:
conpubs.Close()
Quelque chose d'autre à dire qu'il est l'inspecteur d'objets montre des objets très différents. Lorsque VB.NET dit
objTransaction System.Data.SqlClient.SqlTransaction
- Connexion System.Data.SqlClient.SqlConnection
- IsolationLevel ReadCommitted (4096)
IronPython dit objTransaction Microsoft .Scripting.BoundBuiltinFunction avec un ensemble plus large de sous-éléments. Cela signifie probablement quelque chose lié au problème, mais je n'ai pas le niveau technique pour le savoir. Il existe des références à l'objet lié à une transaction ado.net, comme "public member" -> instance -> "System.Data.SqlClient.SqlTransaction". IronPython crée-t-il l'objet dont j'ai besoin ou crée-t-il simplement un autre type d'objet et c'est pour cela que je reçois l'erreur?
BeginTransaction() <- crochets manquants? – JulianM
droite, c'était :) :) – Pablo
si vous postez votre commentaire comme une réponse, je vais l'accepter :) – Pablo