第21章 更新数据源
本章将以上一章讨论的有关通过ODBC(开放数据库连接)访问数据库的知识为基础,并且将通过相同的机制更新Northwind Traders数据库。
本章主要内容:
数据库事务
如何使用记录集对象更新数据库
如何在更新操作中将数据从记录集传输到数据库
如何更新表中的现有行
如何添加新行到表中
21.1 更新操作
当编写的代码仅仅用于查看一个数据库的信息时,唯一的问题是是否获得了访问数据的授权。只要这个数据库具有正确的访问保护,其中的数据就是安全的。一旦开始编写更新数据库的代码,那就是另外一回事了。因为将要修改数据库的内容,所以这样的修改可能会破坏数据库的完整性,使表中的内容失去意义,甚至使数据库无法使用。在实际的数据库中使用编写的代码之前,始终要利用一个测试数据库对代码进行正确的测试。
数据库更新通常包括更新现有表一行中的一个或多个字段,如修改订单数量或者添加新行-- 在Northwind数据库的上下文中,新行也许是新订单。下面将开发这两种情况的示例,但是首先要考虑内在的问题。
在多用户数据库的上下文中,数据库更新操作所产生的大多数问题变得很明显。如果不正确地控制更新过程,几个用户的并行访问有可能产生两种问题。如果一个人获准检索一个记录,而与此同时正在对该记录进行更新操作,那么就会出现第一种问题。这个仅仅想读取数据的人最后有可能得到更新前的旧数据,甚至得到一些字段包含旧数据、一些字段包含新数据的混合物。第二种问题出现在并行更新的情况下,一个人开始更新一个记录时,对该记录的另一个更新已经在进行中。如果这时只涉及表中的单个记录,那么更新有可能失败。如果涉及几个表中的记录,那么数据库中的数据最后将处于一种不一致的状态。在分析如何处理这些问题之前,首先观察一下对记录集的更新操作是如何进行的。