• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 在ASP.NET 2.0中操作数据之四十七:用SqlDataSource控件插入、更新、删除数据

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

作者:heker2007 字体:[增加 减小] 来源:互联网 时间:2017-05-11

heker2007通过本文主要向大家介绍了在ASP.NET 2.0中操作数据之四十七:用SqlDataSource控件插入、更新、删除数据等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

导言:

  正如在教程概述插入、更新和删除数据里讨论的那样,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显示出来。

http://files.weikejianghu.com/file_images/article/201605/2016051416003959.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属性,在方框右边会出现一个椭圆型区域。

http://files.weikejianghu.com/file_images/article/201605/2016051416003960.gif
图2:在属性窗口里选择DeleteQuery属性。

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

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

DELETE FROM Products
WHERE ProductID = @ProductID
</div>

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

http://files.weikejianghu.com/file_images/article/201605/2016051416004261.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语句中的参数。

在“编辑命令和参数”对话框里键入相关删除信息后,点“OK”按钮。进代码模式查看代码:

<asp:SqlDataSource ID="ProductsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
SelectCommand=
 "SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]"
DeleteCommand="DELETE FROM Products WHERE ProductID = @ProductID">
<DeleteParameters>
 <asp:Parameter Name="ProductID" />
</DeleteParameters>
</asp:SqlDataSource>

</div>

设置GridView控件以支持删除功能

  设置了DeleteCommand属性后,GridView控件的智能标签里便可包含删除选项。就像在教程概述插入、更新和删除数据里探讨的一样,点击该按钮将促使GridView控件增加一个CommandField列,同时将ShowDeleteButton属性设置为true。就像在图4展示的那样,当通过浏览器访问该页面时,GridView控件将包含一个删除按钮。

http://files.weikejianghu.com/file_images/article/201605/2016051416004662.gif
图4:在GridView控件中,每一行记录都包含一个删除按钮

  点击删除按钮后,将发生postback事件,GridView控件将该行记录的DataKeys值赋值给参数ProductID,并调用SqlDataSource控件的Delete()方法。SqlDataSource控件随即连接到数据库并执行DELETE命令。最后GridView控件再次绑定SqlDataSource控件,获取并展示当前的产品(因为执行了删除命令,刚被删除的那个产品也就显示不出来了)。

  注意:因为GridView控件是将它的DataKeys值传给SqlDataSource控件的参数,所以尤为重要的是将GridView的DataKeyNames属性设置为主键列,而且SqlDataSource控件的SelectCommand要返回这些列。具体到本例,最好将SqlDataSource控件的DeleteCommand里的参数设置为@ProductsID。如果DataKeyNames 属性没有设置,或参数名不是@ProductsID,点击删除按钮时也会发生postback事件,但不会

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-11asp.net对URL含有中文参数的转换
  • 2018-08-20ASP.NET Core 2.0 本地文件操作问题及解决方案
  • 2017-05-11VS2015中C#版本6.0的新特性 你需要知道
  • 2017-05-11获取客户端IP地址c#/vb.net各自实现代码
  • 2017-05-11ABP框架的体系结构及模块系统讲解
  • 2018-08-20MVVM模式下WPF动态绑定展示图片
  • 2017-05-11ASP.NET中MultiView和View选项卡控件的使用方法
  • 2017-05-11asp.net 获取某个时间段的星期并以表格形式排列出来
  • 2017-05-11轻松解决asp.net用户ASPNET登录失败问题的方法分享
  • 2017-05-11c# static的全部用法收集整理

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C# GetWindowRect简介及使用说明
    • 一个.net 压缩位图至JPEG的实例代码
    • gridview行索引获取方法及实现代码
    • gridview+objectdatasource+aspnetpager整合实例
    • asp.net后台弹窗如何实现
    • asp.net得到本机数据库实例的两种方法代码
    • asp.net分页控件使用详解【附实例下载】
    • asp.net 相关文章实现方法第1/2页
    • 如何传值在2个页面之间 要求不刷新父页面,并且不能用Querystring传值
    • asp.net利用cookie保存用户密码实现自动登录的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有