zoukankan      html  css  js  c++  java
  • SqlDataAdapter的增加,删除,修改

    public void piu()
    {
    string strcon = "server = XQ-20160210KQLE\SA;uid = sa;pwd = 123456;database = 医院信息管理";
    SqlConnection conn = new SqlConnection(strcon);
    conn.Open();

    string strcomm = "select * from Table1";
    SqlDataAdapter da = new SqlDataAdapter(strcomm, conn);

    DataSet ds = new DataSet("模拟数据集");
    da.Fill(ds, "模拟虚拟表");
    Console.WriteLine("添加成功");
    piuu(ds);
    ds.Tables[0].Clear();

    //更新数据表
    string strupdate = "update Table1 set 产品 = '瓦子兹' where 序号 = 5 ";
    SqlDataAdapter da1 = new SqlDataAdapter(strcomm, conn);
    da1.UpdateCommand = new SqlCommand(strupdate, conn);

    DataSet ds2 = new DataSet("模拟数据集2");
    DataTable dt2 = new DataTable("模拟虚拟表2");
    ds2.Tables.Add(dt2);
    da1.Fill(dt2);

    DataRow dr = ds2.Tables[0].Rows[5];
    dr["产品"] = "天山雪";
    da1.Update(ds2, "模拟虚拟表2");

    Console.WriteLine("更新数据成功");
    ds2.Tables[0].Clear();

    //添加数据表
    string strinsert = "insert Table1(序号,产品,年限,数量) values('11','袜子子','1年',100)";
    SqlDataAdapter da2 = new SqlDataAdapter("select * from Table1",conn);//数据适配器
    da2.InsertCommand = new SqlCommand(strinsert,conn);//数据适配器操作数据(添加)

    DataSet ds1 = new DataSet("模拟数据集1");//声明虚拟数据库
    DataTable dt1 = new DataTable("模拟虚拟表1");//声明虚拟数据表
    ds1.Tables.Add(dt1);//虚拟数据库集合(加入)虚拟数据表
    da2.Fill(dt1);//填充虚拟数据表

    DataRow dr1 = dt1.NewRow();//声明一行
    dr1["产品"] = strinsert;//添加行数据
    dt1.Rows.Add(dr1);//虚拟数据表集合(加入)新行
    da2.Update(ds1,dt1.ToString());//更新数据库

    Console.WriteLine("添加数据成功");
    ds1.Tables[0].Clear();

    //删除数据表
    string strdelete = "delete Table1 where 序号 = 24";
    SqlDataAdapter da3 = new SqlDataAdapter("select * from Table1",conn);
    da3.DeleteCommand = new SqlCommand(strdelete,conn);

    DataSet ds3 = new DataSet("模拟数据3");
    DataTable dt3 = new DataTable("模拟虚拟表3");
    ds3.Tables.Add(dt3);
    da3.Fill(ds3.Tables[0]);
    dt3.Rows[1].Delete();//删除数据记录
    da3.Update(ds3,dt3.ToString());
    ds3.Tables[0].Clear();

    Console.WriteLine("删除数据成功");
    //Update
    //为具有指定 System.Data.DataTable 名称的 System.Data.DataSet 中
    //每个已插入、已更新或已删除的行调用相应的
    //INSERT、UPDATE 或 DELETE 语句。
    //参数:
    // dataSet:
    // 用于更新数据源的 System.Data.DataSet。
    //
    // srcTable:
    // 用于表映射的源表的名称。
    conn.Close();

    }
    private void piuu(DataSet ds)
    {
    foreach (DataTable dt in ds.Tables)
    {
    Console.WriteLine(dt.TableName);
    foreach (DataRow dr in dt.Rows)
    {
    foreach (DataColumn dc in dt.Columns)
    {
    Console.Write(dr[dc]+" ");
    }
    Console.WriteLine();
    }
    }
    }
    ---------------------
    作者:秋风十里
    来源:CSDN
    原文:https://blog.csdn.net/qq_23833037/article/details/53043951
    版权声明:本文为博主原创文章,转载请附上博文链接!

    另:

    SqlCommand和SqlDataAdapter的区别 

    1.SqlCommand对应DateReader而 SqlDataAdapter对应DataSet

    2. SqlCommand的执行效率比较高,但不灵活,功能也有限   SqlDataAdapter的效率要低点,它是连接的,可随时更新数据,功能强大。

    3.SqlCommand是C#中与Sql数据库打交道的对象,几乎所有的Sql数据库操作都需要使用该对象来实现,但其功能有限,只是简单的实现了与Sql数据库的接口而已;   SqlDataAdapter是一个功能强大的SqL数据适配器,也用于操作Sql数据库,但它的操作都要通过SqlCommand来实现(有一个属性对象的类型就是SqlCommand),也就是说,可以把SqlDataAdapter看作是一个把一些特殊功能封装了、增强了的SqlCommand!

    SqlDataAdapter和SqlCommand对比分析

    一、SqlDataAdapter和DateSet

    原理:DateSet是数据的内存驻留表示形式,它提供了独立于数据源的一致关系编程模型;从某种程度上说DateSet就是一个不可视的数据库。但真正与数据源打交道的是 SqlDataAdapter,包括从数据源填充数据集和从数据集更新数据源。SqlDataAdapter使用Fill()方法将检索的数据填充到 DateSet。

    流程:IE——GridView——DataSet——SqlDataAdapter——SQL数据库

    public void BindGrid()
    
    {
    
    SqlDataAdapter myAdp = new SqlDataAdapter("select * from UserAdmin order by UserId desc", conn);
    
    DataSet ds = new DataSet();
    
    myAdp.Fill(ds, "Authors");
    
    //Label1.Text = ds.Tables[0].Rows.Count.ToString(); //得到共有多少条记录;
    
    GridView1.DataSource = ds.Tables["Authors"].DefaultView;
    
    GridView1.DataBind();
    
    }

    二、SqlCommand和SqlDataReade

    原理:SqlCommand通过ExecuteReader()方法将得到的数据给SqlDataReade对象。

    SqlDataReade逐行将从数据源获得的数据放进缓冲区进行处理。

    优点:SqlDataReade执行速度快,提高应用程序性能。

    优点原因:一旦数据可用,SqlDataReade就会立即检索该数据,而不是等待返回查询的全部结果;默认情况下,一次只在缓冲区存储一行,从而降低系统开销。

    缺点:使用不灵活。

    流程:IE——SqlDataReade——SqlCommand——SQL数据库

    注:每次使用完SqlDataReade对象后一定要调用Close()方法将其关闭。因为SqlDataReade对象以独占的方式使用Connection。

    例:

    SqlCommand myconn = new SqlCommand("select * from v_economy2_comidd where eid=" + Request.QueryString["eid"] + "", conn);
    
    conn.Open();
    
    SqlDataReader rd = myconn.ExecuteReader();
    
    rd.Read();
    
    Lbyear1.Text = rd["year1"].ToString();
    
    Lbmonth1.Text = rd["month1"].ToString();
    
    Lbcom_name.Text = rd["com_name"].ToString();
    
    rd.Close();
    
    conn.Close();

    总结
    SqlDataAdapter:
    1.用于填充 DataSet 和更新 SQL 数据库的“一组”数据命令和“一个”数据库连接。

    2.SqlDataAdapter不但可以操作多个SQL命令,而且还可以操作一个SQL命令
    3.DataSet是关系型数据库的抽象,ADO.NET使用DataAdapter(意为数据适配器)作为dataset和数据源之间的桥梁;DataAdapter 提供了Fill()方法从数据库中获取数据并生成DataSet。
    4.SqlDataAdapter用于把数据放到DataSet中,集中修改、删除后,通过Update把整个DataSet再提交回给数据库进行处理

    SqlCommand:
    1.对 SQL 数据库执行的“一个”SQL 语句或存储过程。

    2.SqlCommand只能操作一个SQL命令
    3.SqlCommand用来更新少量数据时比较合适,速度快,使用方便。他是执行sql语句查询的。

    参考:https://blog.csdn.net/chenjinglong/article/details/12291147

  • 相关阅读:
    Spring集成XFire开发WebService
    【ASP.NET】验证控件
    中文分词——正向最大匹配法
    fastdfs storage server的设计与实现
    php浮点数精确运算
    完整导出IntelliJ IDEA的快捷键
    时空理论-结构-空间,运动-时间
    结构论-系统的结构逻辑
    结构主义理论-时空一体才是存在的本源
    分形几何学
  • 原文地址:https://www.cnblogs.com/liuslayer/p/11061802.html
Copyright © 2011-2022 走看看