zoukankan      html  css  js  c++  java
  • (3)C#之ADO.Net 数据集(DataSet)

    DataSet是ADO.Net的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。(来自百度百科)

     
    下面写一段代码来示例DataSet的用法:(下面这段代码是一个按钮的Click事件)
     1 using(SqlConnection conn = new SqlConnection("Data Source=PC201507182002\SQLEXPRESS;Initial Catalog=123456;Integrated Security=True"))
     2             {
     3                 conn.Open();
     4                 using (SqlCommand cmd = conn.CreateCommand())
     5                 {
     6                     cmd.CommandText = "select * from student where name =@name";
     7                     cmd.Parameters.Add(new SqlParameter("@name",textBox1.Text));
     8                     SqlDataAdapter da = new SqlDataAdapter(cmd);
     9                     DataSet ds = new DataSet();
    10                     da.Fill(ds);
    11                     
    12                     DataTable dt = ds.Tables[0];
    13                     DataRowCollection rows = dt.Rows;
    14                     for (int i = 0; i < rows.Count; i++)
    15                     {
    16                         DataRow dr = rows[i];
    17                         string name = (string)dr[0];
    18                         string name1 = (string)dr[1];
    19  
    20                         MessageBox.Show("name:"+name+"----name1:"+name1);
    21                     }
    22  
    23  
    24                 }
    25             }
    从SqlDataAdapter开始说起。
     
    ◇SqlDataAdapter对象在DataSet与数据之间起着桥接的作用。我们创建一个新的SqlDataAdapter对象da,在创建的同时把cmd传给它。再创建一个DataSet对象ds。
     
    ◇然后在da.fill(ds)这一步,就执行了上面的那条select语句,并且把查询结果(一张表)填充到ds中。(ds可以是一个庞大的数据集,可以存放多张表格,每次填充的时候就会在原有的表格数量上加1)。ds保存在内存中。
     
    ◇DataTable是个临时保存数据的虚拟表格。接下来创建这个DataTable对象dt,同时把我们刚刚查询到的那张表,也就是ds.Table[0]赋给dt。也就是  DataTable dt = ds.Tables[0];  这一条语句,其中ds.Table[];中括号里可以有很多种类型的参数,可以是索引型的,也可以是数组型的。
     
    ◇在创建DataRowCollection对象rows,并把dt.Rows赋给它。这个rows包含了该表格中所有的行信息。
     
    ◇最后创建DataRow对象dr,把rows分为row,也就是逐行的意思,可以通过row[索引|数组];来获取具体的每一个项的values值。
     
    ◇注意:这个获取到的值得类型是object类型,需要用(int)row[0];或者(string)row[0];来进行强制类型转换。
     
    总结,其实说白了就是一个逐层细分的过程,首先通过SqlDataAdapter交给DataSet,然后通过DataSet在细化到DataTable,在从DataTable中获取到所有的DataRowCollection,再分给每个DataRow,最后通过DataRow的对象dr定位到该行的某一列项dr[0];从而获得具体的某一项。
     
     
  • 相关阅读:
    看完一本,加油
    一个简单的动作,让你的手机号码变成空号
    Goldwave心得
    UML设计初步 基本概念一(actor, use case)
    ASP.NET控件开发 概念和HelloWorld控件
    控件的呈现
    ASP.NET控件生命周期
    ASP老项目中如何搜索一个文件在哪些地方被引用
    PL/SQL语法 游标
    2009编程语言排名
  • 原文地址:https://www.cnblogs.com/kaolalovemiaomiao/p/4707553.html
Copyright © 2011-2022 走看看