加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

在ASP.NET 2.0中操作数据之四十七:用SqlDataSource控件插入、更

发布时间:2016-11-23 14:05:09 所属栏目:MsSql教程 来源:站长网
导读:导言: 正如在教程概述插入、更新和删除数据里讨论的那样,GridView控件内置更新和删除功能,而DetailsView和FormView控件不仅具有编辑和删除功能,还有插入功能。我们不要写一行代码就可一将这些功能直接应用于一个数据源控件。在这篇教程里,我们指出Obj

导言:

  正如在教程概述插入、更新和删除数据里讨论的那样,GridView控件内置更新和删除功能,而DetailsView和FormView控件不仅具有编辑和删除功能,还有插入功能。我们不要写一行代码就可一将这些功能直接应用于一个数据源控件。在这篇教程里,我们指出ObjectDataSource控件最好与GridView, DetailsView和FormView控件一起使用,才更好的实现插入、更新和删除功能。对SqlDataSource控件来说,同样如此!

  对ObjectDataSource控件来说,为了实现插入、更新和删除,我们需要指定调用那个方法来实现插入、更新和删除功能。对SqlDataSource来说,我们需要指定INSERT, UPDATE和DELETE三种SQL语句(或存储过程)。就像接下来在本章探讨的那样,我们可以手写代码或SqlDataSource的设置数据源向导自动的生成。
注意:由于我们已经探讨过了GridView, DetailsView和FormView控件的插入、编辑和删除功能,在本章我们主要关注怎样设置SqlDataSource以支持这些功能。倘若你想重温如何实现GridView, DetailsView和FormView的这些功能,参考教程概述插入、更新和删除数据

第一步:指定INSERT, UPDATE和DELETE命令

就像在前2章教程探讨的那样,从SqlDataSource控件检索数据,需要设置2个属性:

1. ConnectionString,指定要查询的数据库。
2. SelectCommand,指定用来返回结果的ad-hoc SQL语句或存储过程的名称。

  对SelectCommand里的参数来说,其值在SqlDataSource控件的SelectParameters部分指定,可以为“硬编码”值,普通的参数源值(比如来自于查询字符串、 session变量、Web控件等)、或通过编程设置。当一个数据Web控件调用SqlDataSource的Select() 方法时——不管是自动的还是通过编程调用的,发生这些事件:连接指定数据库,对参数赋值并执行查询,检索并返回结果。返回的结果是DataSet还是DataReader,取决于SqlDataSource的DataSourceMode属性是设置为DataSet还是DataReader。

  和选择数据一样,要实现插入、更新和删除数据,我们只要提供相应的INSERT, UPDATE和DELETE SQL语句就够了。方法是对InsertCommand, UpdateCommand和DeleteCommand属性赋以相应的 INSERT, UPDATE和DELETE SQL语句。如果这些SQL语句包含参数(现实中经常碰到),将这些参数放在相应的InsertParameters, UpdateParameters和DeleteParameters部分。

  一旦指定了SqlDataSource控件的InsertCommand, UpdateCommand和DeleteCommand三种命令,就可以在相应的数据Web控件启用插入、编辑和删除功能。为验证起见,我们拓展Querying.aspx页面的删除功能。

  打开SqlDataSource文件夹的InsertUpdateDelete.aspx和Querying.aspx页面,首先选择Querying.aspx页面,进入设计模式,选中SqlDataSource控件和GridView控件(ID分别为ProductsDataSource和GridView1),点“编辑”菜单,选“复制”(或直接按Ctrl+C),然后将这2个控件粘贴在InsertUpdateDelete.aspx页面。在浏览器里测试该页面,你将会看到表Products里所有产品的ProductID, ProductName和UnitPrice显示出来。

/uploads/allimg/c161121/14OI93OL110-34Z03.gif
图1:所有产品按ProductID排序并显示出来

添加SqlDataSource控件的eleteCommand命令和DeleteParameters属性

  到目前为止,我们的SqlDataSource只是从表Products返回记录,然后在GridView控件里显示出来。我们的目标是扩展其功能,允许用户在GridView控件删除数据。
  为此,我们需要为SqlDataSource控件的DeleteCommand和DeleteParameters属性赋值,然后启用GridView的删除功能。

可以用下面的方法为SqlDataSource控件的DeleteCommand和DeleteParameters属性赋值:

1. 声明代码
2. 在属性窗口指定属性值
3. 在设置数据源向导的“指定自定义SQL语句或存储过程”界面里指定
4. 在设置数据源向导的“来自表或视图的指定列”界面里点“高级”按钮,这样做会自动生成DeleteCommand和DeleteParameters属性里要用到的DELETE SQL语句和参数。

  我们将在接下来的第2步探讨如何自动得生成DELETE语句。现在我们尝试在属性窗口里设置DeleteCommand和DeleteParameters。当然直接声明代码和使用设置数据源向导也可以办到。

  打开InsertUpdateDelete.aspx页面,进入设计模式,选中ID为ProductsDataSource的SqlDataSource控件,打开其属性窗口(从视图菜单中选属性窗口,或直接按F4按钮)选择DeleteQuery属性,在方框右边会出现一个椭圆型区域。

/uploads/allimg/c161121/14OI93P53910-35V17.gif
图2:在属性窗口里选择DeleteQuery属性。

  注意:SqlDataSource控件其实并没有DeleteQuery属性。或者更准确的说,它是由DeleteCommand和DeleteParameters两个属性构成的。虽然我们在设计模式里可以看到属性窗口列出了DeleteQuery属性,但切换到源码模式的时候,我们会看到代码里只有 DeleteCommand属性而没有DeleteQuery属性。

  点击该椭圆型区域,将转换到“编辑命令和属性”对话框(见图3)。在该对话框,你可以指定DELETE SQL语句及要用的参数。在DELETE: command文本框里键入如下查询:(手工输入或者借助查询生成器,悉听尊便):

DELETE FROM Products
WHERE ProductID = @ProductID

  然后,点Refresh Parameters按钮,将参数@ProductID添加到下面的参数列表。

/uploads/allimg/c161121/14OI93PH0-363404.gif
图3:在属性窗口里选择DeleteQuery属性(译注:图片说明有误)

  暂时不要为该参数赋值(在参数源下列列表选“None”)。当我们为GridView控件启用删除功能后,GridView将自动为该参数传递值,传递的值为被选择删除的那行记录的DataKeys值。

  注意:在DELETE查询语句中使用的参数名必须与GridView, DetailsView或FormView控件的DataKeyNames值一样。比如:因为表Products的主键是ProductID,自然地,GridView控件的DataKeyNames值也是ProductID,相应地,DELETE语句中的参数应设置为@ProductID(当然,你也可以任意地设置为其它名字,比如@ID)。当参数名与DataKeyNames不匹配时(比如你将参数设置为@ID),GridView控件无法将DataKeys值传给SQL语句中的参数。

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读