zoukankan      html  css  js  c++  java
  • 更改DataTable中的数据 增删改查

    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="###" class="dzdz zhan abc" target="_self">点赞 <span>0</span></a>
        </div>
  • 相关阅读:
    sockjs-node/info?t=报错解决
    微信昵称表情符号前端显示问题
    vue-cli 3.0项目安装报错
    vue-cli项目按需引入element-ui实际操作
    javafx分别设置四个边框
    springmvc使用<mvc:default-servlet-handler/>导致的handler失效
    windows注册表删除右键菜单
    计算机实现32位整数加减乘除的方法
    常用排序算法
    AbstractCollection类中的 T[] toArray(T[] a)方法源码解读
  • 原文地址:https://www.cnblogs.com/sunny3158/p/14363871.html
Copyright © 2011-2022 走看看