zoukankan      html  css  js  c++  java
  • DataSet离线数据集(9)

    SqlDataReader是连接相关的,SqlDataReader中的查询结果并不是放在程序中的,而是放在数据库服务器中,SqlDataReade只是相当于放了一个指针(游标),只能读取当前游标指向的行,一旦连接断开就不能在读取。这样的好处是无论查询结果有多少条,对程序占用的内存几乎都没有影响。

    SqlDataReader对于小数据量的数据来说带来的只有麻烦,ADO.net中提供了数据集的机制,将查询结果填充到本地内存中,这样连接断开,服务器断开都不影响数据的读取。DataSet数据集的好处是降低数据库服务器的压力,编程也简单!

    DataSet相当于这样:1.SqlDataReader reader= cmd.ExecuteReader();

              2. List<string> list= new List<string>() ;

              3.while (reader.Read())

                {

                     list.add(reader.GetString(0)) 

                }

    DataSet dataset=new DataSet();

    SqlDataAdapter adapter=new SqlDataAdapter(cmd);

    adapter.Fill(dataset);

    DataSet包含若干表DataTable,Data Table包含若干行DataRow。

    foreach(DataRow row in dataset.Tables[0].Rows) row["Name"]。

    添加一个按钮btnDataSet,并为其添加Click事件代码如下:

            private void btnDataSet_Click(object sender, RoutedEventArgs e)
            {
                using (SqlConnection conn = new SqlConnection("Data Source=.; Initial Catalog=T_Test; User ID=sa ;Password=123456"))
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "select * from T_Student where Age>@aaa";
                        cmd.Parameters.Add(new SqlParameter("@aaa", 20));
                        //SqlDataAdapter是可以帮我们把SqlCommand查询结果填充到DataSet的 类
                        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                        //DataSet相当于本地一个复杂集合List<>
                        DataSet dataset = new DataSet();
                        adapter.Fill(dataset);//把SqlCommand查询结果填充到DataSet中
                        DataTable table = dataset.Tables[0];
                        DataRowCollection rows=table.Rows;
                        for (int i = 0; i < rows.Count; i++)
                        {
                            DataRow row = rows[i];
                            int age = (int)row["Age"];
                            string name = (string)row["Name"];
                            MessageBox.Show(name+","+age);
    
                        }
    
                    }
    
                }
            }
     

    总结步骤:1.创建一个连接数据库的对象。

    SqlConnection conn = new SqlConnection("Data Source=.; Initial Catalog=T_Test; User ID=sa ;Password=123456";

    2.打开数据库连接对象。conn.Open();

    3.创建SQL命令行对象。SqlCommand cmd = conn.CreateCommand();

    4.创建要执行的命令行字符串。(使用参数传值@XXX)cmd.CommandText = "select * from T_Student where Age>@aaa";

                                      cmd.Parameters.Add(new SqlParameter("@aaa", 20));

    5.创建一个SqlDataAdapter类的对象,此类是可以帮我们把SqlCommand查询结果填充到DataSet的类

                     SqlDataAdapter adapter = new SqlDataAdapter(cmd);

    6.创建一个DataSets对象并把SqlCommand查询结果填充到DataSet中。    DataSet dataset = new DataSet();       adapter.Fill(dataset);

    7.从dataset中获取表,表都存放在DataTable中。DataTable  table = dataset.Tables[0];

    8.获得表中的行的集合。 DataRowCollection rows=table.Rows;

    9.遍历行中的每一行,以及行中的字段。

          for (int i = 0; i < rows.Count; i++)
                        {
                            DataRow row = rows[i];
                            int age = (int)row["Age"];
                            string name = (string)row["Name"];
                            MessageBox.Show(name+","+age);
                        }

    运行完毕

  • 相关阅读:
    C# 内存映射研究学习
    js Promise async await 学习研究
    js 字节数组转数字以及数字转字节数组
    C# 生成一个当前程序唯一的短字符串
    C# FileStream 读取大文件时ReadByte和Read的速度对比
    用一个数维护最多32个可叠加状态,比如权限的状态,既有“读”,又有“写”
    大牛干货:100条Unity基础小贴士
    Unity教程之-Unity3d移动平台性能优化专题(12):面板的设置
    Unity ShaderLab学习总结
    (转)【Unity技巧】Unity中的优化技术
  • 原文地址:https://www.cnblogs.com/qiushuixizhao/p/3106098.html
Copyright © 2011-2022 走看看