更改DataTable中的数据 增删改查

摘要:
//Book.51cto.com/art/200908/48569.htm Visual C#2008原则和系统开发第10章:在无连接环境中访问数据库。1.插入新行。创建DataTable并使用列和约束定义其结构后,(4)使用代码创建、填充和追加行。还可以通过将对象类型数组传递给Add方法来创建新行。使用Items集合指定要修改的数据的列名和新值;

https://book.51cto.com/art/200908/148569.htm

《Visual C# 2008原理与系统开发》第10章非连接环境下访问数据库,本章主要讲解了在非连接环境下访问数据库的模式,描述了以数据库为中心的应用程序设计、ADO.NET架构以及ADO.NET和XML之间的集成。本小节为大家介绍更改DataTable中的数据。

10.2.2  更改DataTable中的数据

在DataSet中创建DataTable之后,就可以像对数据库中的表那样对DataTable执行操作,如添加、查看、编辑和删除数据,监视错误和事件以及查询数据等。当修改DataTable中的数据时,可以验证更改是否准确,并且确定是否可以通过编程方式接受或拒绝更改。

1.插入新行

在创建DataTable并使用列和约束定义其结构后,即可向表中添加新的数据行。

(1)创建一个新行

若要向DataTable添加一新行,首先要声明一个DataRow类型的变量。当调用NewRow方法时会返回一个新的DataRow对象。然后DataTable根据DataColumnCollection定义的表的结构来创建DataRow对象。

  1. DataRow drNewEmployee = drEmployees.NewRow(); 

(2)填充新行

向DataTable添加了新行之后,可以使用索引或列名操作新行。

  1. DataRow drNewEmployee = drEmployees.NewRow();  
  2. drNewEmployee[0] = 11;  
  3. drNewEmployee[1]="smith";  
  4. drNewEmployee["EmployeeID"] = 11;  
  5. drNewEmployee["EmpName"] = "Smith"

(3)向DataTable追加行

在数据插入到新行后,使用Add方法将该行添加到DataRowCollection中。

  1. dtEmp]oyees.Rows.Add(drNewEmployee); 

(4)使用代码来创建、填充和追加行

也可以通过将一个Object类型的数组传递给Add方法来创建一个新行。

  1. dtEmployees。Rows.Add(New object(){11,"smith"}) 

该方法在表中创建新行,并设置其列值为对象数组中的值。

注意:数组中的值根据它们在表中出现的顺序与列匹配。

2.更新表中的数据

DataRow类为了在编辑数据时挂起和恢复数据行的状态提供了3个方法:BeginEdit、EndEdit和CancelEdit方法。当编辑数据时,调用BeginEdit可以挂起任何事件(或异常),使用Items集合指定要修改的数据的列名和新值;使用EndEdit重新恢复任何事件(或异常);使用CancelEdit则可以回滚任何更改和重新激活任何事件或异常。

【实例10-2】  修改表中的数据。

下面演示了如何使用BeginEdit方法、Items集合和EndEdit方法。

  1. //获取Employees表中的第4行数据  
  2. DataRow drEmployee = dtEmployees.Rows[3];  
  3.  
  4. drEmployee.BeginEdit();  
  5.  
  6. drEmployee("EmpName") = "John";  
  7. drEmployee("Title")="Sales";  
  8. drEmployee.EndEdit(); 

3.删除行

可以使用两种方法从DataTable对象中删除DataRow对象:DataRowCollection对象的Remove方法和DataRow对象的Delete方法。Remove方法从DataRowCollection中删除DataRow;而Delete方法只对删除的行做标记,通常用于无连接环境中的数据。

(1)Remove方法

如下面的示例代码所示,DataRowCollection的Remove方法把DataRow当作一个参数并从集合中删除它。

  1. DataRow drEmployee = dtEmployees. Rows(3);  
  2. dtEmployees.Rows.Remove(drEmployee); 

(2)Delete方法

下面的示例代码说明了如何调用DataRow的Delete方法将RowState属性值更改为Deleted。

  1. drEmployee Delete(); 

4.实例分析

制作一个可以向学生成绩数据集中添加数据和删除数据的窗口,在窗体中创建一个新的数据集Ds_Students,并创建一个表Dt_studentList,表结构如图10-9所示。

示例窗体设计如图10-10所示。

 
图10-9  Dt_studentList结构
 
(点击查看大图)图10-10  示例窗口
"添加"按钮代码如下:
  1. private void button1_Click(object sender, System.EventArgs e)  
  2. {  
  3.     //添加一新行  
  4.      DataRow dr = Dt_studentlist.NewRow();  
  5.  
  6.      //向行的列中添加数据  
  7.      dr[0] = t_xh.Text;  
  8.      dr[1] = t_xm.Text;  
  9.      dr[2] = t_bj.Text;  
  10.      dr[3] = t_kc.Text;  
  11.      dr[4] = t_lx.Text;  
  12.      dr[5] = int.Parse(t_cj.Text);  
  13.      dr[6] = int.Parse(t_xh.Text);  
  14.  
  15.      //将新的行添加到DataSet中  
  16.      Dt_studentlist.Rows.Add(dr);  

"删除"按钮代码如下:

  1. private void button2_Click(object sender, System.EventArgs e)  
  2. {  
  3.     //获取DataGridView上所选要删除行的行号  
  4.      int index = dataGridView1.SelectedRows[0].Index;  
  5.  
  6.      //找到用户选定的行  
  7.      DataRow dr = Dt_studentlist.Rows[index];  
  8.  
  9.      //删除该行  
  10.      dr.Delete();  

【提示】在DataSet中修改数据,不等于在SQL Server数据库中修改数据。在DataSet中修改数据,相当于在本地内存中的数据库修改数据,与SQL Server数据库无关,只有通过SqlDataAdapter将在DataSet中修改的数据更新回SQL Server数据库,服务器中的数据才有效。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节
        <a href="http://t.zoukankan.com/sunny3158-p-14363871.html###"   target="_self">点赞 <span>0</span></a>
    </div>

免责声明:文章转载自《更改DataTable中的数据 增删改查》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SpringBoot通过RedisTemplate执行Lua脚本的方法步骤C#定时发送邮箱设置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CALayer 进阶

转载自:http://www.cofcool.net/development/2015/06/19/ios-study-note-eight-CALayer-info/ The CALayer class manages image-based content and allows you to perform animations on that con...

视频编码 率失真性能评价指标:PSNR SSIM BD-rate BD-PSNR

BD-rate 算法 参考 BD-rate,全称Bjøntegaard-Delta rate, 用于评价不同的视频编码器RD(率失真)性能。 写这篇博客,部分原因是发现BD-rate的中文解释完全没有。 算法 1. 一个编码器,给定bitrate,计算PSNR(以Y为例)。取不同的bitrate,在R-D曲线得到四个点。 2. 用三次多项式拟合R-D...

winform右下角弹窗

网页是否经常在电脑右下角弹窗显示消息?其实Winform也是可以实现的。下面介绍两种方法。 第一步:设计窗体 第二步:实现代码 第一种方法 引用user32 声明常量 窗体Load事件 窗体FormClosing事件 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24...

微信小程序最新获取用户头像昵称的方法

官方提供的最新方法Open-data标签,使用这个标签可以不用用户授权直接获得头像和昵称 微信小程序获取用户信息的两种方法wx.getUserInfo&open-data https://blog.csdn.net/lucky_Zeng/article/details/80066479...

windows和cisco两种创建DHCP服务器方法

1.启动【添加/删除程序】对话框 2.单击【添加/删除 Windows 组件】出现 【windows 组件向导单击下一步】出现 【Windows组件】对话框从列表中选择【网络服务】 3. 单击【详细内容】,从列表中选取【动态主机配置协议(DHCP)】如单击【确定】 4. 单击【下一步】 输入到 Windows2000 Server 的安装源文件的路径,单击...

一文带你搞定AOP切面

摘要:AOP在spring中又叫“面向切面编程”,是对传统我们面向对象编程的一个补充,主要操作对象就是“切面”,可以简单的理解它是贯穿于方法之中,在方法执行前、执行时、执行后、返回值后、异常后要执行的操作。 本文分享自华为云社区《一篇文搞懂《AOP面向切面编程》是一种什么样的体验?》,作者: 灰小猿。 一、什么是Spring的AOP? AOP在sprin...