【问题标题】:Rollback in Ironpython using System.Data.SqlClient使用 System.Data.SqlClient 在 Ironpython 中回滚
【发布时间】:2023-09-28 21:17:02
【问题描述】:

我无法使用以下代码 sn-p 回滚,需要帮助:

import clr
import sys
clr.AddReference('System.Data')
from System.Data.SqlClient import SqlConnection, SqlParameter, SqlTransaction
conn_string = "****"
connection = SqlConnection(conn_string)
connection.Open()
createuser = connection.CreateCommand()
createuser.CommandText = "****"
try:
    reader = createuser.ExecuteReader()
    reader.Close()
except:
    reader.Rollback()

谢谢!

我现在明白了,但是现在我遇到了一个问题,它需要一个字符串,但如果我将 SQL 查询字符串作为参数放入,我就无法执行参数化值:

createuser.CommandText = "****"
createuser.Parameters.AddWithValue("@Username", username);
usertransaction = connection.BeginTransaction(createuser)
try:
    usertransaction.Commit()
except:
    usertransaction.Rollback()

【问题讨论】:

    标签: sql ironpython rollback


    【解决方案1】:

    您需要使用SqlConnection.BeginTransaction() 方法开始事务。您将收到一个具有 CommitRollback 方法的事务对象。

    【讨论】:

    • 对不起,我不明白.. 您当然可以(并且应该)在给定的场景中使用参数。是的,DbParameterCollection 没有AddWithValue 方法,但是您可以在命令上调用CreateParameter,设置它(类型、名称、方向、值等),然后将Add 设置为命令的Parameters。这有点麻烦,但一点也不难……还是我误解了,你的意思是别的?