ADO.NET之使用DataSet类更新数据库

1.首先从数据库获得数据填充到DataSet类,该类中的表和数据库中的表相互映射。

2.对DataSet类中的表进行修改(插入,更新,删除等)

3.同步到数据库中:使用SqlDataAdapter实例名.Update(DataSet实例名,DataSet中和数据库中表相映射的表名),它必须和SqlCommandBuilder必须组合使用

SqlCommandBuilder:自动生成单表命令,用于将对 DataSet 所做的更改与关联的 SQL Server 数据库的更改相协调,意思是对数据库执行生成相应的sql语句,用于更新数据库

Update()方法:执行刚才自动生成的命令

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string source = "server=(local) \\SQLEXPRESS;integrated security=true;database=student";
            SqlConnection con = new SqlConnection(source);
            con.Open();
            if (con.State == ConnectionState.Open)
                Console.WriteLine("数据库已连接!");
            SqlDataAdapter sda = new SqlDataAdapter();//定义数据适配器
            DataSet ds = new DataSet();
            //通过数据适配器对数据库进行查询
            string select = "select * from class";
            SqlCommand com1 = new SqlCommand(select, con);//定义一个查询命令
            sda.SelectCommand = com1;//使用sda.SelectCommand执行这个查询命令(在数据源中选择记录)
            sda.Fill(ds, "result");//将查询结果填充到DataSet类中,并命名为selectresult
            //显示查询结果
            foreach (DataRow x in ds.Tables["result"].Rows)
                Console.WriteLine("name:{0} id:{1}", x[0], x[1]);
            //添加新的行到DataSet中的DataTable中(第一种方式):
            //使用NewRow()方法,返回一个空白行,然后填充数据,最后把它添加到Rows集合中
            DataRow r = ds.Tables["result"].NewRow();
            r["name"] = "数据结构";
            r["id"] = 3;
            ds.Tables["result"].Rows.Add(r);//添加新的行到DataSet中的DataTable中(第二种方式):
            //把一组已经初始化的数组传递到Row.Add()方法
            ds.Tables["result"].Rows.Add(new object[] { "java",4});
            //删除特定的一行
            for(int i=0;i<ds.Tables["result"].Rows.Count;i++)
            {
                if (ds.Tables["result"].Rows[i]["name"].ToString().Trim() == "c语言")//trim():需要移除行中存储数据的前导空白字符串和尾部空白字符串
                {
                    //Remove()和delete()的区别:Remove移除一行后,该行后面的行全部自动向前移,而Delete不向前移,但是使用delete无法更新到数据库,因为无法生成sql的删除代码
                    //ds.Tables["result"].Rows.Remove(ds.Tables["result"].Rows[i]);
                    //i--;
                    ds.Tables["result"].Rows[i].Delete();//移除一行的另一种方式
                }
            }
            SqlCommandBuilder scb = new SqlCommandBuilder(sda);//自动生成单表命令,用于将对 DataSet 所做的更改与关联的 SQL Server 数据库的更改相协调,意思是对数据库执行生成相应的sql语句,用于更新数据库
            sda.Update(ds, "result");//和SqlCommandBuilder必须组合使用,执行刚才自动生成的命令,“result”为DataSet和数据库中互相映射的表,意思是把result表中所做的更改同步到数据库源表中
            foreach (DataRow x in ds.Tables["result"].Rows)
                Console.WriteLine("name:{0} id:{1}", x[0], x[1]);
        }
    }
}

ADO.NET之使用DataSet类更新数据库

时间: 2024-10-13 14:37:42

ADO.NET之使用DataSet类更新数据库的相关文章

C#使用DataSet Datatable更新数据库的三种实现方法

本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法.DataAdapter 更新数据源以及使用sql语句更新.分享给大家供大家参考之用.具体方法如下: 一.自动生成命令的条件 CommandBuilder 方法 a)动态指定 SelectCommand 属性 b)利用 CommandBuilder 对象自动生成 DataAdapter 的 DeleteCommand.InsertCommand 和 UpdateCommand

ADO.NET之填充DataSet类

主要使用数据适配器SqlDataAdapter类进行填充DataSet类 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; using System.Data; namespace ConsoleApplication1 { class Progr

使用DataSet Datatable 更新数据库的三种方式

1:自动生成命令的条件 CommandBuilder 方法a)动态指定 SelectCommand 属性b)利用 CommandBuilder 对象自动生成 DataAdapter 的 DeleteCommand.InsertCommand 和 UpdateCommand.c)为了返回构造 INSERT.UPDATE 和 DELETE .SQL CommandBuilder 必须执行 SelectCommand.即:必须额外经历一次到数据源的行程,这可能会降低性能.这也是自动生成命令的缺点.d)

用DataSet方式更新数据库表

/* 用DataSet的方式更新数据库表 * 注意:用DataSet更新数据库表的时候,该表必须指定主键或者是唯一列 */ string connString = "Data Source=(local);Initial Catalog=Linq;Integrated Security=SSPI";//用windows用户登录 using (SqlConnection conn = new SqlConnection(connString)) { conn.Open(); using

C#中DataSet类的使用

DataSet类是ADO.NET中最核心的成员之一,也是各种开发基于.Net平台程序语言开发数据库应用程序最常接触的类.每一个DataSet都有很多个DataTables和Relationships.RelationShip应该也是一种表,特殊的是,这个表只是用来联系两个数据表的.每一个DataTable都有很多datarows和datacols, 也包括ParentRelations,ChildRelations 和一些限制条件像主键不可以重复的限制. DataSet每一行有一个RowStat

ADO.NET之DataSet类

DataSet相当于一个小型数据库,通过它可以管理数据和关系 1.将sql代码的返回结果填充到该类中,然后从该类中读取,显示.(类似于Sqldatareader类) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; using System.Data; nam

C#-数据库访问技术 ado.net——创建 数据库连接类 与 数据库操作方法 以及简单的数据的添加、删除、修改、查看

数据库访问技术 ado.net 将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层的数据库访问技术 1.创建数据库,并设置主外键关系 2.创建新的C#项目,创建 数据库连接类 与 数据库操作方法 a.引用数据库 using System.Data.SqlClient;    b.创建数据库连接类:先进行编写连接字符串,在实例化连接类 c.创建数据库操作方法(此处不是实例化类)    d.打开数据库 → 执行操作 → 关闭数据

C#-ado.net学习笔记-会有更新

ado.net 通用类对象.在本地内存暂存数据 托管类对象.让本地通用类对象连接数据库,让本地通用类对象和数据库同步 连接数据库 new connection(connectstring) command=newconnection.createcommand 用command或dataset类对象读取.添加.更新.删除数据 用datasetview或datatable.params类对象筛选数据 用table类对象保存读取xml文件

ADO.NET基础巩固-----连接类和非连接类

      最近的一段时间自己的状态还是不错的,早上,跑步,上自习看书,下午宿舍里面编程实战,晚上要么练习代码,要么去打球(在不打就没机会了),生活还是挺丰富的. 关于C#的基础回顾就先到前面哪里,这些要自己在工作中慢慢的去体会,不是说看书就可以掌握的.我们都是从学生时代过来的知道每个人的学习情况是不一样的,所以找到自己的学习节奏是最好不过的. 下面是关于访问数据库[ADO.NET]的学习,之前刚开始学习的时候把这些基本的都过了一遍,但是长时间不使用,一些基本的用法还是会遗忘的.     一:关