关于数据回滚问题请教

ewdragon 2006-04-07 02:33:58
大家好。我现在是用dataset直接去更新数据库。发现如果更新到第三条时出错了。那时第一,二条在存储过程中的数据并不会回滚。我想请问大家怎么样才能实现更新时整张表都会回滚。也就是如果第三条出错时。第一,二条已经修改的数据也会回滚回去。
...全文
351 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kkeemmgg 2006-04-07
  • 打赏
  • 举报
回复
个人认为在数据访问层中,最好不要使用事务.其理由主要有三:其一,数据存储与处理,是数据库的本份,访问层作为数据交换的通道保持相对独立性;其二,OLEDB数据源不支持并行事务,如果在访问层加上事务处理,不便于以后的移植;其三,当前主流数据库基本都有高效,安全事务处理;其四,把数据及商业逻辑统一放在数据源本身处理,执行效率高,而且从一种数据库移植到另一种数据库的时候,基本不需要修改其它层.仅需改变一种存储过程的语法到另一种的翻译就行了.
个人体会.请批评.
nanhaoff 2006-04-07
  • 打赏
  • 举报
回复
使用事务
自由人2008 2006-04-07
  • 打赏
  • 举报
回复
楼上的很对,在程序中实现的。当然也可以在存储过程来实现事务,速度更快一些
time_is_life 2006-04-07
  • 打赏
  • 举报
回复
public void RunSqlTransaction(string myConnString)
{
SqlConnection myConnection = new SqlConnection(myConnString);
myConnection.Open();

SqlCommand myCommand = myConnection.CreateCommand();
SqlTransaction myTrans;

// Start a local transaction
myTrans = myConnection.BeginTransaction();
// Must assign both transaction object and connection
// to Command object for a pending local transaction
myCommand.Connection = myConnection;
myCommand.Transaction = myTrans;

try
{
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
myCommand.ExecuteNonQuery();
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
myCommand.ExecuteNonQuery();
myTrans.Commit();
Console.WriteLine("Both records are written to database.");
}
catch(Exception e)
{
try
{
myTrans.Rollback();
}
catch (SqlException ex)
{
if (myTrans.Connection != null)
{
Console.WriteLine("An exception of type " + ex.GetType() +
" was encountered while attempting to roll back the transaction.");
}
}

Console.WriteLine("An exception of type " + e.GetType() +
" was encountered while inserting the data.");
Console.WriteLine("Neither record was written to database.");
}
finally
{
myConnection.Close();
}
}

62,250

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧