ADO.NET最佳实践(下)[7]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 spidertan 的 blog

            因为dataset与数据库是分离的,所以你应该在你的应用程序中避免当多个客户更新数据库数据时发生冲突。这里有几种处理乐观并发错误的解决方案。一是在你的表中增加一个时间戳列。二是校验一行中所有列的数据是否与你在sql声明中使用where子句找到的数据静态匹配。下面的例子说明如何使用where条件处理乐观并发错误:

‘visual basic

  dim nwindconn as sqlconnection = new sqlconnection("data source=localhost;integrated security=sspi;initial catalog=northwind")

  dim custda as sqldataadapter = new sqldataadapter("select customerid, companyname from customers order by customerid", nwindconn)

  ' the update command checks for optimistic concurrency violations in the where clause.

  custda.updatecommand = new sqlcommand("update customers (customerid, companyname) values(@customerid, @companyname) " & _

                                        "where customerid = @oldcustomerid and companyname = @oldcompanyname", nwindconn)

  custda.updatecommand.parameters.add("@customerid", sqldbtype.nchar, 5, "customerid")

  custda.updatecommand.parameters.add("@companyname", sqldbtype.nvarchar, 30, "companyname")

  ' pass the original values to the where clause parameters.

  dim myparm as sqlparameter

  myparm = custda.updatecommand.parameters.add("@oldcustomerid", sqldbtype.nchar, 5, "customerid")

  myparm.sourceversion = datarowversion.original

  myparm = custda.updatecommand.parameters.add("@oldcompanyname", sqldbtype.nvarchar, 30, "companyname")

  myparm.sourceversion = datarowversion.original

  ' add the rowupdated event handler.

本文关键:数据库设计
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top