1
我的要求是创建临时表,然后执行一个存储过程,它将行插入临时表中,然后删除临时表。 但是,如果在执行此操作时发生错误,我想始终在临时表中删除临时表。我知道企业库存管理连接,无论如何连接关闭后,表将被丢弃。然而,只是想看看是否可以使用Try和Finally块来做到这一点。 同时支持Sybase和MS Sql。 因此,对于如:DBTransaction和企业库
string preUploadSql = "create table #CHANGES (Id numeric(18) identity not null)";
string postUploadSql = "drop table #CHANGES";
bCommand.CommandText = preUploadSql + "; " exec sp_update ;";
DbConnection dbConnection = DataAccessHelper.CreateConnection();
if (dbConnection.State != ConnectionState.Open)
{
dbConnection.Open();
}
DbTransaction dbTransaction = dbConnection.BeginTransaction();
try
{
DataAccessHelper.ExecuteNonQuery(dbCommand, dbTransaction);
}
finally
{
dbCommand.CommandText = postUploadSql;
DataAccessHelper.ExecuteNonQuery(dbCommand, dbTransaction);
dbTransaction.Commit();
if (dbConnection.State == ConnectionState.Open)
{
dbConnection.Close();
}
}
是这样的可能,当我尝试这一点,如果有错误,在最后块dbtransaction似乎没有访问临时表,让我想到当出现错误时,事务范围超出上下文或类似的范围。 任何想法? 如何最好地处理这个问题?
+1使用DbTransaction的示例 – Liam 2012-10-02 09:19:24