zoukankan      html  css  js  c++  java
  • ADO.NET 2SqlDataAdapter、DataSet 的基本用法

    数据集完全独立于数据源,可以与数据源链接或者完全断开,其基本作用是为存储在内存缓存中的的数据提供关系视图
    如果只是想读取和显示数据,则值需要使用数据读取器,尤其是处理大量数据的时候
    如果需要处理数据,然后更新数据库,就需要使用数据集
    ================================================
    数据来自数据源,数据适配器就像水管,数据集就像水桶,
    数据适配器将数据总数据源导入到数据集中
    如果把DataSet比作数据库,那么DataTable就是数据表,DataColumn就是列,DataRow就是行
    ===========================================================================
    一、利用 DataAdapter 填充数据到 DataSet
    static void Main(string[] args)
            {
                string connstr = @"Data Source=WIN-VD88F15CMMD;Initial Catalog=Key;User ID=sa;pwd=130988825";
                string sql = "select kXh,kXm from [Class]";
                using (SqlConnection conn = new SqlConnection(connstr))
                {
                    using (SqlDataAdapter da = new SqlDataAdapter(sql, conn))
                    {
                        DataSet ds = new DataSet();
                        da.Fill(ds,"Class");
                        DataTable dt = ds.Tables["Class"];
                        foreach (DataRow row in dt.Rows)              //遍历表
                        {
                            foreach (DataColumn col in dt.Columns)
                                Console.WriteLine(row[col]);
                            Console.WriteLine("".PadLeft(20,'='));
                        }
                        Console.ReadKey();
                    }
                }
            }
    ==============================================================
    二、有两个 DataTable 的 DataSet
    static void Main(string[] args)
            {
                string connstr = @"Data Source=WIN-VD88F15CMMD;Initial Catalog=Key;User ID=sa;pwd=130988825";
                string sqla = "select * from [Class]";
                string sqlb = "select * from [Student]";
                string sql = sqla + sqlb;                     //注意查询出两个数据表的sql是如何写的
                using (SqlConnection conn = new SqlConnection(connstr))
                {
                    using (SqlDataAdapter da = new SqlDataAdapter())
                    {
                        da.SelectCommand = new SqlCommand(sql,conn);
                        DataSet ds = new DataSet();
                        da.Fill(ds,"Class");                  //  当第一的表被命名为Table时,第二个表默认为Table1
                        DataTableCollection dtc = ds.Tables;
                        string f1 = "kGender='男'";
                        string srt = "kXm asc";
                        foreach (DataRow row in dtc["Class"].Select(f1, srt))
                        {
                            Console.WriteLine("{0} {1}",row["kXm"].ToString().PadRight(25),row["kXh"]);
                        }
                        Console.ReadKey();
                        foreach (DataRow row in dtc[1].Rows)         //  虽然第二个表默认为Table1,但是我们一般用序号索引来引出第二个表
                        {
                            Console.WriteLine("{0} {1}",row[1].ToString().PadRight(25),row[2]);
                        }
                        
                    }
                    Console.ReadKey();
                }
            }
    ========================================================================
    三、利用 DataView 对 DataTable 中的数据进行 筛选排序
    static void Main(string[] args)
            {
                string connstr = @"Data Source=WIN-VD88F15CMMD;Initial Catalog=Key;User ID=sa;pwd=130988825";
                string sql = "select * from [Class]";
                using (SqlConnection conn = new SqlConnection(connstr))
                {
                    using (SqlDataAdapter da = new SqlDataAdapter())
                    {
                        da.SelectCommand = new SqlCommand(sql, conn);
                        DataSet ds = new DataSet();
                        da.Fill(ds, "Class");
                        DataTable dt=ds.Tables["Class"];
                        DataView dv = new DataView(
                            dt,                             //关联一个DataTable
                            "kGender='男'",                  //筛选器
                            "kXm",                            // 排序列
                            DataViewRowState.CurrentRows
                            );
                        foreach (DataRowView drv in dv)
                        {
                            for (int i = 0; i < dv.Table.Columns.Count; i++)
                            {
                                Console.WriteLine(drv[i]+" ");
                                Console.WriteLine();
                            }
                        }
                        Console.ReadKey();
                    }
                }
            } 
    ======================================================================
    四、实现DataTable中数据的 增、删、改 并保存到数据源
    1、数据集-数据的修改
    static void Main(string[] args)
            {
                string connstr = @"Data Source=win-45022h0f9nsmysqlserver;Initial Catalog=CallCenter;Persist Security Info=True;User ID=sa;pwd=130988825";
                string qry = @"select * from Student where sId=22";
                string upd = @"update Student set sName=@sName where sId=@sId";
                using (SqlConnection conn = new SqlConnection(connstr))
                {
                    using (SqlDataAdapter sda = new SqlDataAdapter(qry, conn))
                    {
                        DataSet ds = new DataSet();
                        sda.Fill(ds,"Student");
                        DataTable dt =ds.Tables["Student"];
                        dt.Rows[0]["sName"] = "左杰";          //修改现有数据
                        SqlCommand cmd = new SqlCommand(upd,conn);
                        cmd.Parameters.Add("@sName",SqlDbType.NChar,10, "sName");
                        cmd.Parameters.Add("@sId", SqlDbType.Int,4,"sId");
                        sda.UpdateCommand = cmd;
                        sda.Update(ds,"Student");
                    }
                }
            }
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    2、数据集-数据的增加
    static void Main(string[] args)
            {
                string connstr = @"Data Source=win-45022h0f9nsmysqlserver;Initial Catalog=CallCenter;Persist Security Info=True;User ID=sa;pwd=130988825";
                string qry = @"select * from Student where sId=23";   //选出的数据为空
                string ins = @"insert into Student(sName,sGender,sAge,sClass,sId) values(@sName,@sGender,@sAge,@sClass,@sId)";
                using (SqlConnection conn = new SqlConnection(connstr))
                {
                    using (SqlDataAdapter sda = new SqlDataAdapter(qry, conn))
                    {
                        DataSet ds = new DataSet();              //选择出一个空的数据集
                        sda.Fill(ds,"Student");
                        DataTable dt=ds.Tables["Student"];
                        DataRow newrow = dt.NewRow();
                        newrow["sName"] = "胡章诚key";
                        newrow["sGender"]='男';
                        newrow["sAge"]=21;
                        newrow["sClass"] = 1;
                        newrow["sId"] = 23;
                        dt.Rows.Add(newrow);
                        SqlCommand cmd= new SqlCommand(ins,conn);
                        cmd.Parameters.Add("@sName", SqlDbType.NChar, 10, "sName");
                        cmd.Parameters.Add("@sGender", SqlDbType.Char, 2, "sGender");
                        cmd.Parameters.Add("@sAge", SqlDbType.Int, 4, "sAge");
                        cmd.Parameters.Add("@sClass", SqlDbType.Int, 4, "sClass");
                        cmd.Parameters.Add("@sId", SqlDbType.Int, 4, "sId");
                        sda.InsertCommand = cmd;
                        sda.Update(ds,"Student");
                    }
                }
            }
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
    3、数据集-数据的删除
    static void Main(string[] args)
            {
                string connstr = @"Data Source=win-45022h0f9nsmysqlserver;Initial Catalog=CallCenter;Persist Security Info=True;User ID=sa;pwd=130988825";
                string qry = @"select * from Student where sClass=2";
                string del = @"delete from Student where sClass=@sClass";
                using (SqlConnection conn = new SqlConnection(connstr))
                {
                    using (SqlDataAdapter sda = new SqlDataAdapter(qry, conn))
                    {
                        DataSet ds = new DataSet();
                        sda.Fill(ds,"Student");
                        DataTable dt=ds.Tables["Student"];
                        SqlCommand cmd = new SqlCommand(del,conn);
                        cmd.Parameters.Add("@sClass", SqlDbType.Int, 4, "sClass");
                        foreach (DataRow row in dt.Rows)
                        {
                            row.Delete();
                        }
                        sda.DeleteCommand = cmd;
                        sda.Update(ds,"Student");
                    }
                }
            }
  • 相关阅读:
    gsoap 学习 1-自己定义接口生成头文件
    arcgis for silverlight 鼠标点击地图获取当前经纬度
    远程桌面服务器和本机粘贴板共享
    开源ORM
    Memcached
    Visual Studio一些插件
    asp.net 中的事务
    (转载)轻量级表达式树解析框架Faller
    冒泡排序
    (转)理解POCO
  • 原文地址:https://www.cnblogs.com/key1309/p/3144671.html
Copyright © 2011-2022 走看看