千家信息网

ASP.NET 2.0中如何进行插入,更新和删除数据

发表于:2026-11-05 作者:千家信息网编辑
千家信息网最后更新 2026年11月05日,ASP.NET 2.0中如何进行插入,更新和删除数据,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。ASP.NET 2.0
千家信息网最后更新 2026年11月05日ASP.NET 2.0中如何进行插入,更新和删除数据

ASP.NET 2.0中如何进行插入,更新和删除数据,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

ASP.NET 2.0数据教程第四步:插入,更新和删除数据

ASP.NET 2.0中常用的插入,更新和删除数据的模式有两种。***种模式,我称之为DB直接模式,涉及的方法被调用时,会向数据库里发出一个INSERT, 或UPDATE,或DELETE命令,这个命令只对单个数据库记录做操作。象这样的方法一般接受一系列对应于插入,更新或删除的值的标量参数(譬如整数,字符串,布尔值,日期时间等)。譬如,用这个模式来操作Products表的话,删除方法会接受一个整数参数,代表所需要删除的记录的ProductID,而插入方法则会接受一个对应于ProductName的字符串,对应 于UnitPrice的decimal值,对应于UnitsOnStock的整数等等。

图 21: 每个插入,更新,和删除请求都被立刻发送到数据库

另外一个模式,我称之为批更新模式,可以在一个方法调用里更新整个DataSet,或者整个DataTable,或 者一个DataRow集合。在这个模式里,开发人员在一个DataTable中删除,插入,修改DataRow,然后把这 些DataRow或整个DataTable传给一个更新方法。然后这个方法会轮循传入的DataRow们,通过DataRow的RowState属 性属性来决定这些DataRow是否被改动过,或是新记录,或是被删除的记录,然后为每个记录发出合适的数据库命令。

图 22: 在Update 方法调用之后,所有的变动都与数据库同步了

在ASP.NET 2.0默认情形下,TableAdapter采用批更新模式,但也支持DB直接模式。因为我们在创建我们的TableAdapter时的高级选项中选择了"生成插入,更新,和删除语句" 这个选项,ProductsTableAdapter 包含了一个 Update()方法,该方法实现了批更新模式。具体地说,TableAdapter包含了一个Update() 方法,可以传入一个强类型 的DataSet,或者一个强类型的DataTable,或者一个和多个DataRow。假如你在一开始创建TableAdapter时的选项中没有清除"生成DB直接方法(GenerateDBDirectMethods)"复选框的话,DB直接模 式也会通过Insert(),Update()和Delete()方法来实现。

这两种数据修改模式都使用了TableAdapter的InsertCommand,UpdateCommand, 和DeleteCommand属性来向数据库发出对应的INSERT,UPDATE和DELETE命令。你可以在DataSet设计器里点击TableAdapter,然后在属性窗口查看和改 动InsertCommand,UpdateCommand, 和DeleteCommand属性。(确认你选择了TableAdapter,并且ProductsTableAdapter对象是属性窗口中下拉框里被选中的项)

图23: TableAdapter包含InsertCommand,UpdateCommand, 和DeleteCommand等属性

想查看或改动这些数据库命令的属性的话,点击CommandText子属性,这会启动对应的查询生成器。

图 24: 在查询生成器里配置插入,更新,删除语句

下面的编码例子示范了如何使用批更新模式来把没被终止的,且库存等于或少于25个单元的产品的价格加倍:

NorthwindTableAdapters.ProductsTableAdapter    productsAdapter =    new NorthwindTableAdapters.ProductsTableAdapter();   // For each product, double its price if it is not discontinued    and  // there are 25 items in stock or less  Northwind.ProductsDataTable products = productsAdapter.GetProducts();  foreach (Northwind.ProductsRow product in products)     if (!product.Discontinued && product.UnitsInStock    <  = 25)        product.UnitPrice *= 2;   // Update the products  productsAdapter.Update(products);

下面的编码示范如何使用DB直接模式删除一个产品,更新一个产品,然后添加一个新的产品:

C#

NorthwindTableAdapters.ProductsTableAdapter    productsAdapter = new    NorthwindTableAdapters.ProductsTableAdapter();   // Delete the product with ProductID 3  productsAdapter.Delete(3);   // Update Chai (ProductID of 1), setting the UnitsOnOrder to    15  productsAdapter.Update("Chai", 1, 1, "10 boxes x 20 bags",    18.0m, 39, 15, 10, false, 1);   // Add a new product  productsAdapter.Insert("New Product", 1, 1,    "12 tins per carton", 14.95m, 15, 0, 10, false);

创建自定义的插入,更新,删除方法

用DB直接法生成的Insert(), Update(),和Delete()方法有时 候会感觉有点不方便,特别是当数据表有许多字段的时候。看一下前面这个编码例子,没有IntelliSense的帮助的话,不是很清楚Products表的哪个字段对应Update()和Insert()方法中的哪个输入参数。有时候我们只要更新一到二个字 段或者需要一个自定义的Insert()方法,这个方法需要返回刚插入的记录 的IDENTITY(自增)的字段值。

要创建这样的自定义方法,回到DataSet设计器。在TableAdapter上按右鼠标,选择"添加查询",然后回 到TableAdapter配置向导。在第二屏上,我们可以指明要生成的查询的类型。让我们生成一个添加新 的product(产品)记录,然后返回新添加记录的ProductID值的方法。因此,选择生成一个插入(INSERT)型查询。

图25: 创建一个给Products表添加新记录的方法

下一个屏显示InsertCommand的CommandText属性。在查询语句后面,增添一个SELECT SCOPE_IDENTITY()的查询,这查询将返回当前同一个操作范围内插 入IDENTITY字段的***那个identity 值。(详见技术文档中关 于SCOPE_IDENTITY()的内容以及为什么你应该http://weblogs.sqlteam.com/travisl/archive/2003/10/29/405.aspx)。确认在添加SELECT语句前,你在INSERT语句后面添一个分号 。

图26: 增添查询返回SCOPE_IDENTITY()值

***,把这个新方法命名为InsertProduct。

图 27:放方法名字设成InsertProduct

当你返回DataSet设计器时,你将看到ProductsTableAdapter多了一个新的方法,InsertProduct。如果对应Products表的每个字段,这个新的方法没有对应的参数的话,非常可能的原因是,你忘了给INSERT语句的结尾添加一个分号(semi-colon)。重新配 置InsertProduct方法,确认在INSERT和SELECT语句间有个分号。

在ASP.NET 2.0的默认情形下,插入方法调用的是非查询(non-query)方法,意即,他们只返回受影响的记录数。但是,我们想要让InsertProduct方法返回一个查询返回的值,而不是受影响的记录数。这可以把InsertProduct方法的ExecuteMode属性改成Scalar(标量)来实现。

图 28:把ExecuteMode属性改成Scalar

下面的编码示范如何使用这个新的InsertProduct方法:

C#

NorthwindTableAdapters.ProductsTableAdapter    productsAdapter = new    NorthwindTableAdapters.ProductsTableAdapter();   // Add a new product  int new_productID =    Convert.ToInt32(productsAdapter.InsertProduct("New    Product", 1, 1, "12 tins per carton",    14.95m, 10, 0, 10, false));   // On second thought, delete the product  productsAdapter.Delete(new_productID);

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

方法 更新 数据 模式 属性 查询 生成 数据库 语句 产品 命令 字段 参数 编码 选择 分号 整数 类型 面的 帮助 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网络科技 广州为想互联网科技有限公司 中关村互联网 科技集团 互联网科技开发公司 万达互联网科技 科技互联网创业计划书 互联网科技汛 成都仁贤领冠互联网科技有限公司 科技大学互联网专业好不好 江苏南京365互联网科技 承德科技产业互联网发展 银川新华互联网科技职业技术培训学校图片 互联网科技革命什么开始 上海钢联属于互联网科技股吗 互联网科技新闻 广州智享互联网科技 互联网科技品牌 青岛易易互联网科技 黑龙江互联网科技公司 武汉亿视互联网科技有限公司 山东特亿宝互联网科技有限公司 西安互联网科技 互联网科技论坛 成都玖崟互联网科技有限公司乐商圈怎么样 宁波青枫互联网科技有限公司 互联网金融科技展 互联网科技实习生岗位 有人说阿里系是互联网科技企业 扫呗互联网科技有限公司 互联网科技创业计划的风险分析
0