【发布时间】:2013-05-10 20:18:28
【问题描述】:
我需要创建 2 个按钮,一个用于启动事务 (startButton),另一个用于提交事务 (commitButton)。
我在尝试为 SELECT 命令实现它时遇到了困难。
当我按下commitButton 时,我收到事务已完成且不再可用的错误。
public void startTransaction(IsolationLevel isolationLevel) {
connectSQL();
connection.Open();
transaction = connection.BeginTransaction(isolationLevel);
Console.WriteLine("Transaction started !");
}
public void commitTransaction() {
this.transaction.Commit();
connection.Close();
Console.WriteLine("Transaction commited !");
}
public DataTable readAllRezervari() {
try {
String selectSql = "SELECT * FROM Rezervari;";
SqlCommand sqlCommand = new SqlCommand(selectSql, connection, transaction);
rezervariDataAdapter.SelectCommand = sqlCommand;
rezervariDataAdapter.Fill(rezervariDataSet, "Rezervari");
}
catch (Exception e) {
Console.WriteLine("ERROR: " + e);
try {
transaction.Rollback();
}
catch (Exception e2) {
Console.WriteLine("ERROR: " + e2);
}
}
finally {
connection.Close();
}
rezervariDataTable = rezervariDataSet.Tables["Rezervari"];
return rezervariDataTable;
}
【问题讨论】:
-
我认为这种方式无法实现,需要临时存储数据,只在SAVE方式中使用事务。
-
可能是连接超时了。
-
关于如何将选择命令的事务拆分为 2 部分(startTransaction、commitTransaction)的任何其他解决方案?没有数据适配器
-
这可能在 Windows 应用程序中有效,但如果您在 asp.net 网页上使用它,我非常怀疑这是否有效。
标签: c# .net sql sql-server transactions