我正在使用以下代码同时执行两个命令。我使用 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());
}
错误:
最佳答案
您必须告诉您的 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/