第一节、数据修改的必备条件
1.1、数据库安全
用户视图打开数据库连接时,DBMS首先使用用户提供的凭证进行认证。只有通过认证的用户才可访问DBMS,并执行由DBMS授权的任务。
DBMS提供的权限通常有以下几种:
(1)读取权限
(2)写入权限
(3)执行权限
(4)视图定义权限
这些权限或者权限组合可应用于下列级别:
(1)数据库
(2)数据库中的对象,如表、视图或者存储过程
(3)对象内容,如表中的列
1.2、数据库视图
视图是存储的SELECT查询,提供了另一种访问数据的方式。可以用视图封装多种复杂的技术,而不必每次从各个表中检索数据,或是使用复杂的查询。
视图可以将查询保存在数据库中,从而简化代码。
例:
数据库中名为ProductView的视图可能包含如下SQL语句:
SELECT Product.ProductId, Product.ProductName, Product.CategoryId, Category.CategoryName
FROM Product INNER JOIN Category
ON Product.CateoryId = Category.CategoryId
然后可以使用下列代码访问这些信息:
SELECT * FROM ProductView
1.3、应用程序的数据源
使用数据适配器在数据库和应用程序之间交换数据。
数据适配器可以通过下列方法进行初始化。
(1)SQL语句:根据用户提供的SELECT语句,表适配器创建向导可以创建Update、Insert、Delete SQL语句。
(2)存储过程:必须提供用于检索和修改数据的存储过程。
注意:
(1)仅当表适配器包含用于插入、更新或删除的有效SQL语句或存储过程时,才能修改数据。
(2)数据修改必须符合数据库结构的约束。如果存在外键关系且被实施,就不能破坏外键关系。
2、如何避免数据被覆盖
向应用程序添加已有的数据库时,会提示是否在程序运行时将数据库文件复制到当前项目的输出目录。这将导致每次运行应用程序时,将在解决方案管理器中的数据库复制到输出目录,也就是说当应用程序操作数据库时,其实是操作的副本。当应用程序下次运行时,对数据库的修改将丢失。
解决方法:
在解决方案资源管理器中单击数据库并查看属性,修改“复制到输出目录”属性。
(1)不复制;(2)始终复制;(3)如果较新则复制。
3、使用数据绑定控件修改数据
示例:
(1)创建数据库和数据表。数据库“复制到输出目录”属性设置为“如果较新则复制”。
(2)创建应用程序窗体,添加DataGridView控件。
(3)编辑DataGridView控件的数据绑定。
(4)对DataGridView控件的输入进行约束。