第九周学习笔记:ADO.Net中DataSet的应用

一、思维导图

8fa6f2f5a8034b86916e4faccb96cbb7474.jpg

二、知识点描述

    属性

CaseSensitive

获取或设置一个值,该值指示 DataTable 对象中的字符串比较是否区分大小写。

Container

获取组件的容器。

DataSetName

获取或设置当前 DataSet 的名称。

DefaultViewManager

获取 DataSet 所包含的数据的自定义视图,以允许使用自定义的 DataViewManager 进行筛选、搜索和导航。

DesignMode

获取指示组件当前是否处于设计模式的值。

EnforceConstraints获取或设置一个值,该值指示在尝试执行任何更新操作时是否遵循约束原则。

Events

获取附加到该组件的事件处理程序的列表。

ExtendedProperties

获取与 DataSet 相关的自定义用户信息的集合。

HasErrors

获取一个值,指示在此 DataTable 中的任何 DataSet 对象中是否存在错误。

IsInitialized

获取一个值,该值指示是否已初始化 DataSet。

Locale

获取或设置用于比较表中字符串的区域设置信息。

Namespace

获取或设置 DataSet 的命名空间。

Prefix

获取或设置一个 XML 前缀,该前缀是 DataSet 的命名空间的别名。

Relations

获取用于将表链接起来并允许从父表浏览到子表的关系的集合。

RemotingFormat

为远程处理期间使用的 SerializationFormat 获取或设置 DataSet

SchemaSerializationMode

获取或设置 SchemaSerializationMode 的 DataSet

Site

获取或设置 DataSet 的 ISite

Tables

获取包含在 DataSet 中的表的集合。

    第一部分:查询

    我们都知道DataReader的用法,但是它有一个很大的缺陷,这一方法一般适用于比较庞大的数据的提取,可以将数据一条一条单独提取出来存放在服务器上,此时如果服务器中断而我们正在读取数据,那么将无法读取后面的数据。

    那么我们今天就要讲到ADO.Net中DataSet的应用,在数据库不是很大时,可以一次性将所有数据提取出来放在内存中,此时如果服务器中断而我们正在提取数据,不需要担心,因为数据可以继续提取。

    DataSet可以存放若干个表,每个表都有若干行。

 private void btn_Load_Click(object sender, EventArgs e)
        {
            SqlConnection sqlConnection = new SqlConnection();
            sqlConnection.ConnectionString =
                "Server=(local);Database=MEDI;Integrated Security=sspi";
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.Connection = sqlConnection;
            sqlCommand.CommandText =
                "SELECT * FROM tb_Region;"
                + "SELECT * FROM tb_Hospital;"
                + "SELECT * FROM tb_Department;"
                + "SELECT * FROM tb_DepartmentDoctor;";
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();
            sqlDataAdapter.SelectCommand = sqlCommand;
            DataSet dataSet = new DataSet();
            sqlConnection.Open();
            sqlDataAdapter.Fill(dataSet);
            sqlConnection.Close();
            DataTable RegionTable = dataSet.Tables[0];
            DataTable HospitalTable = dataSet.Tables[1];
            DataTable DepartmentTable = dataSet.Tables[2];
            DataTable DepartmentDoctorTable = dataSet.Tables[3];
            DataRelation[] dataRelations =                                                                 
            {
                new DataRelation                                                                            
                    ("Region_Hospital"                                                                    
                    , RegionTable.Columns["No"]                                                      
                    , HospitalTable.Columns["RegionNo"]                                                   
                    , false)                                                                                
                , new DataRelation                                                                        
                    ("Hospital_Department"                                                                         
                    , HospitalTable.Columns["No"]                                                            
                    , DepartmentTable.Columns["HospitalNo"]                                                       
                    , false)    
                , new DataRelation                                                                        
                    ("Department_DepartmentDoctor"                                                                         
                    , DepartmentTable.Columns["No"]                                                            
                    , DepartmentDoctorTable.Columns["DepartmentNo"]                                                       
                    , false)                                                          
            };
            dataSet.Relations.AddRange(dataRelations);
            this.trv_DoctorUnit.Nodes.Clear();
            foreach (DataRow RegionRow in RegionTable.Rows)
            {
                TreeNode RegionNode = new TreeNode();
                RegionNode.Text = RegionRow["Name"].ToString();
                this.trv_DoctorUnit.Nodes.Add(RegionNode);
                foreach (DataRow HospitalRow in RegionRow.GetChildRows("Region_Hospital"))
                {
                    TreeNode HospitalNode = new TreeNode();
                    HospitalNode.Text = HospitalRow["Name"].ToString();
                    RegionNode.Nodes.Add(HospitalNode);
                    foreach (DataRow DepartmentRow in HospitalRow.GetChildRows("Hospital_Department"))
                    {
                        TreeNode DepartmentNode = new TreeNode();
                        DepartmentNode.Text = DepartmentRow["Name"].ToString();
                        DepartmentNode.Tag = DepartmentRow["No"];
                        HospitalNode.Nodes.Add(DepartmentNode);
                        foreach (DataRow DepartmentDoctorRow in DepartmentRow.GetChildRows("Department_DepartmentDoctor"))
                        {
                            TreeNode DepartmentDoctorNode = new TreeNode();
                            DepartmentDoctorNode.Text = DepartmentDoctorRow["Name"].ToString();
                            DepartmentDoctorNode.Tag = DepartmentDoctorRow["No"];
                            DepartmentNode.Nodes.Add(DepartmentDoctorNode);
                        }
                    }
                }
            }
        }


ef07898dcc2a29571ec44285f2e5b31bdf6.jpg

6bcbcc69298f4d4e5d855bbdc435549f281.jpg

    第二部分:更新

    如果需要更新某一表格某一行,代码示例:row["属性名"]=“新内容”

    如果需要删除某一表格某一行,代码示例:table.row.Remove()

    如果需要新增某一表格某一行,代码示例:table.newrow()

private void button3_Click(object sender, EventArgs e)  //单击事件
        {
            string Str = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
            using (SqlConnection conn = new SqlConnection(Str))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "select * from T_Age";
                    DataSet dataset = new DataSet();      
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);  
                    adapter.Fill(dataset);          
                    DataTable table = dataset.Tables[0]; 
                    DataRow row = table.Rows[0];  
            row["Name"]="小高";      //将第一行的 Name 字段,更改为 "小高"
            table.Rows.RemoveAt(1);    //删除第二行
            DataRow dr = table.NewRow();//增加新行
                    
              SqlCommandBuilder builder = new SqlCommandBuilder(adapter) //自动生成操作命令
            
            adpter.Update(dataset);
                    }
                }
            }
        }

 

 

 

转载于:https://my.oschina.net/u/3964922/blog/2885700

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值