ADO.NET之使用DataSet类更新数据库
2014-07-22 12:08
309 查看
1.首先从数据库获得数据填充到DataSet类,该类中的表和数据库中的表相互映射。
2.对DataSet类中的表进行修改(插入,更新,删除等)
3.同步到数据库中:使用SqlDataAdapter实例名.Update(DataSet实例名,DataSet中和数据库中表相映射的表名),它必须和SqlCommandBuilder必须组合使用
SqlCommandBuilder:自动生成单表命令,用于将对 DataSet 所做的更改与关联的 SQL Server 数据库的更改相协调,意思是对数据库执行生成相应的sql语句,用于更新数据库
Update()方法:执行刚才自动生成的命令
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 来创建、读取、更新和删除数据
- Winform使用ADO.NET的SqlDataAdapter更新多表数据
- 使用ADO.NET实现数据的更新
- C#使用Ado.Net更新和添加数据到Excel表格的方法
- 使用 ADO.NET 来创建、读取、更新和删除数据
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题
- 使用ADO.NET 和C# 处理BLOB 数据
- [翻译]Visual C# .NET中使用ADO.NET读写 BLOB 数据
- 如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据
- 使用ADO.net转换数据到Excel格式并提供下载
- 在ADO.NET中使用事务保护数据的完整性(5)
- 数据访问:使用 ADO.NET 的最佳实践(ADO.NET 技术文档)
- 使用 ADO.NET 和 Oracle 进行高级数据访问
- 使用ADO.NET解锁 Microsoft Access数据(一)
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题(非原创,摘自书中)
- 在ADO.NET中使用事务保护数据的完整性(4)
- 数据访问:使用 ADO.NET 的最佳实践(ADO.NET 技术文档)
- 使用ADO.NET解锁 Microsoft Access数据(二)
- 在ADO.NET中使用事务保护数据的完整性(1)