您现在的位置: 无忧电子商务网 >> 信息学院 >> 程序开发 >> asp.net >> 正文

ADO.NET的开发场景及传统ADO的处理

作者:作者:未…    信息学院来源:网络收集    点击数:    更新时间:2006-8-28 我要参与讨论

  qlParameter("@sShipCountry", SqlDbType.NVarChar, 30, "ShipCountry"));
  oDa.InsertCommand = oInsCmd;

  //==========================================================
  //-- Set up the UPDATE Command
  //==========================================================
  sProcName = "prUpdate_Order";
  oUpdCmd = new SqlCommand(sProcName, oCn, oTrn);
  oUpdCmd.CommandType = CommandType.StoredProcedure;
  oUpdCmd.Parameters.Add(new SqlParameter("@nOrderID", SqlDbType.Int, 4, "OrderID"));
  oUpdCmd.Parameters.Add(new SqlParameter("@dtOrderDate", SqlDbType.DateTime, 8,"OrderDate"));
  oUpdCmd.Parameters.Add(new SqlParameter("@sShipCity", SqlDbType.NVarChar, 30, "ShipCity"));
  oUpdCmd.Parameters.Add(new SqlParameter("@sShipCountry", SqlDbType.NVarChar, 30, "ShipCountry"));
  oDa.UpdateCommand = oUpdCmd;

  //==========================================================
  //-- Set up the DELETE Command
  //==========================================================
  sProcName = "prDelete_Order";
  oDelCmd = new SqlCommand(sProcName, oCn, oTrn);
  oDelCmd.CommandType = CommandType.StoredProcedure;
  oDelCmd.Parameters.Add(new SqlParameter("@nOrderID", SqlDbType.Int, 4, "OrderID"));
  oDa.DeleteCommand = oDelCmd;

  //==========================================================
  //-- Save all changes to the database
  //==========================================================
  oDa.Update(oDs.Tables["Orders"]);

  oTrn.Commit();
  oCn.Close();
 }
 catch (DBConcurrencyException exDBConcurrency)
 {
  //=======================================================
  //-- Roll back the transaction
  //=======================================================
  oTrn.Rollback();

  //--------------------------------------------------------
  //-- May want to rethrow the Exception at this point.
  //-- This depends on how you want to handle the concurrency
  //-- issue.
  //--------------------------------------------------------
  //-- throw(exDBConcurrency);
 }
 catch (Exception ex)
 {
  //==========================================================
  //-- Roll back the transaction
  //==========================================================
  oTrn.Rollback();

  //--------------------------------------------------------
  //-- Rethrow the Exception
  //--------------------------------------------------------
  throw;
 }
 finally
 {
  oInsCmd.Dispose();
  oUpdCmd.Dispose();
  oDelCmd.Dispose();
  oDa.Dispose();
  oTrn.Dispose();
  oCn.Dispose();
 }
 oCn.Close();
 return oDs;
}             图2 捕获ADO.NET中的并发性问题

  在图2 的代码中,可以注意到一个示例方法,它接收一个DataSet参数,并将DataSet中的更改通过DataAdapter的Update方法提交给数据库。如果检测到并发性问题,将由一个特定的catch代码块引发和捕获DBConcurrencyException异常。此时,事务可以回滚,然后还可重新引发异常,直到最终异常被客户端应用程序捕获,从而得以通知用户并询问用户希望如何处理。这里同样要仔细地考虑catch代码块的顺序。例如,如果首先出现一般性的catch代码块,那么它已经捕获了并发性问题。异常处理的关键在于

上一页  [1] [2] [3] [4] [5] 下一页

在google里搜索更多ADO.NET的开发场景及传统ADO的处理

Google
Web www.51ec.org
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
我来说两句 对此文章发表了评论
  昵 称: *必填    ·注册用户·
  评 分: 1分 2分 3分 4分 5分     严禁发表危害国家安全、政治、黄色淫秽等内容的评论,用户需对自己在使用本网站服务过程中的行为承担法律责任。本站管理员有权保留或删除评论内容,评论内容只代表机友个人观点,与本网站立场无关。  
评 论
内 容

 
评论列表 (最新 评论仅限网友观点!)

供求信息




| 设为首页 | 加入收藏 | 关于我们 | 广告服务 | 联系方式 | 友情链接 | 版权申明