c# - 如何在C#中使用SqlTransaction

标签 c# sql-server sqltransaction

我正在使用以下代码同时执行两个命令。我使用 SqlTransaction 来确保所有命令都被执行或回滚。当我在没有“交易”的情况下运行我的程序时,它运行正常;但是当我对他们使用“交易”时,他们显示错误。

我的代码:

SqlTransaction transaction = connectionsql.BeginTransaction();
            
try
{
    SqlCommand cmd1 = new SqlCommand("select account_name from master_account where NOT account_name = 'BANK' AND NOT account_name = 'LOAN'", connectionsql);
    SqlDataReader dr1 = cmd1.ExecuteReader();
    while (dr1.Read())
    {
        comboBox1.Items.Add(dr1[0].ToString().Trim());
    }
    cmd1.Dispose();
    dr1.Dispose();

    SqlCommand cmd2 = new SqlCommand("select items from rate",connectionsql);
    SqlDataReader dr2 = cmd2.ExecuteReader();
    while (dr2.Read())
    {
        comboBox2.Items.Add(dr2[0].ToString().Trim());
    }
    cmd2.Dispose();
    dr2.Dispose();
    transaction.Commit();

    dateTimePicker4.Value = dateTimePicker3.Value;
}
catch(Exception ex)
{
    transaction.Rollback();
    MessageBox.Show(ex.ToString());
}

错误:

enter image description here

最佳答案

您必须告诉您的 SQLCommand 对象使用该事务:

cmd1.Transaction = transaction;

或者在构造函数中:

SqlCommand cmd1 = new SqlCommand("select...", connectionsql, transaction);

确保也打开了 connectionsql 对象。

但是您所做的只是 SELECT 语句。当您使用 INSERT、UPDATE 等类型的操作时,事务会受益更多。

关于c# - 如何在C#中使用SqlTransaction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19165291/

相关文章:

c# - SQL 2005 最佳 "Paging"

c# - 整数或 double 值的正则表达式

c# - 从头开始——我应该使用 (MS Visual Studio) C# 还是 (MS Visual Studio) C++?

php - 如何使用多个服务器名称修复连接字符串无效

c# - 如何将这些调用放在 SqlTransaction 中?

c# - 无法执行事务操作,因为有待处理的请求在工作

c# - 将通用实例转换为非通用实例

sql-server - 如何对两个几何表进行 UNION?

c# - 使用 SQL Server 数据库构建 HTTP REST Web 服务器

java - 如果数据已更改,则不要更新 ResultSet 中的行