2009-12-11 3 views
0

IronPython에서 asp.net의 ado.net 트랜잭션을 생성하려고하는데 다음 오류가 발생합니다. "구성원 롤백을 찾을 수 없습니다"IronPython에서 ado.net 트랜잭션을 만들 수 없습니다.

vb.net ado.net 트랜잭션을 사용하여 ironpython ado.net 트랜잭션에서 다른 점을 보려고했지만 차이점을 보거나 사람이 작동하지 않는 이유와 다른 이유를 찾을 수 없습니다. 아마도 내가 뭔가를 보이지 않아요,이 테스트 코드

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() 

뭔가가 객체 관리자는 매우 다른 개체를 보여주는 말할한다. VB.NET은

objTransaction System.Data.SqlClient.SqlTransaction

  • 연결 System.Data.SqlClient.SqlConnection
  • IsolationLevel READCOMMITTED (4096)

IronPython을 말한다 objTransaction Microsoft는 말할 때 .Scripting.BoundBuiltinFunction은 하위 항목 집합이 더 넓습니다. 이것은 아마도 문제와 관련된 것이지만 기술 수준을 알고있는 것은 아닙니다. "public member"-> instance -> "System.Data.SqlClient.SqlTransaction"과 같은 ado.net 트랜잭션과 관련된 객체에 대한 몇 가지 참조가 있습니다. IronPython이 필요한 객체를 생성하고 있습니까? 아니면 다른 유형의 객체를 생성하고있는 중입니까? 그 때문에 오류가 발생합니다.

+1

들어 BeginTransaction() <다음과 같이, 들어 BeginTransaction 뒤의 괄호를 추가하려고? – JulianM

+0

맞아, 그건 그랬어 :) – Pablo

+0

당신이 대답으로 해설을 게시하면, 나는 그것을 받아 들일 것이다 :) – Pablo

답변

1

사소한 구문 오류가있을 수 있습니다. - 괄호 누락

objTransaction = conpubs.BeginTransaction() 
관련 문제