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[], x[]);
//添加新的行到DataSet中的DataTable中(第一种方式):
//使用NewRow()方法,返回一个空白行,然后填充数据,最后把它添加到Rows集合中
DataRow r = ds.Tables["result"].NewRow();
r["name"] = "数据结构";
r["id"] = ;
ds.Tables["result"].Rows.Add(r);//添加新的行到DataSet中的DataTable中(第二种方式):
//把一组已经初始化的数组传递到Row.Add()方法
ds.Tables["result"].Rows.Add(new object[] { "java",});
//删除特定的一行
for(int i=;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[], x[]);
}
}
}
ADO.NET之使用DataSet类更新数据库的更多相关文章
- C#使用DataSet Datatable更新数据库的三种实现方法
本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法.DataAdapter 更新数据源以及使用sql语句更新.分享给大家供大家参 ...
- 用DataSet方式更新数据库表
/* 用DataSet的方式更新数据库表 * 注意:用DataSet更新数据库表的时候,该表必须指定主键或者是唯一列 */ string connString = "Data Source= ...
- 使用DataSet Datatable 更新数据库的三种方式
1:自动生成命令的条件 CommandBuilder 方法a)动态指定 SelectCommand 属性b)利用 CommandBuilder 对象自动生成 DataAdapter 的 DeleteC ...
- ADO.NET 快速入门(五):从 DataSet 更新数据库
该主题说明了如何使用 DataSet 在数据库中更新数据.你依然可以直接使用 SqlCommand 在数据库中插入.更新.和删除数据,记住这一点也很重要.理解“从数据库填充DataSet”涵盖的概念有 ...
- C#-数据库访问技术 ado.net——创建 数据库连接类 与 数据库操作方法 以及简单的数据的添加、删除、修改、查看
数据库访问技术 ado.net 将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层的数据库访问技术 1.创建数据库,并设置主外键 ...
- ADO.NET基础巩固-----连接类和非连接类
最近的一段时间自己的状态还是不错的,早上,跑步,上自习看书,下午宿舍里面编程实战,晚上要么练习代码,要么去打球(在不打就没机会了),生活还是挺丰富的. 关于C#的基础回顾就先到前面哪里,这 ...
- ADO.NET中的DataSet和DataReader
ADO.NET提供两个对象用于检索关系型数据并把它存储在内存中,分别是DataSet和DataReader.DataSet提供内存中关系数据的表现--包括表和次序.约束等表间的关系的完整数据集合.Da ...
- 使用SQLiteOpenHelper类对数据库简单操作
实现数据库基本操作 数据库创建的问题解决了,接下来就该使用数据库实现应用程序功能的时候了.基本的操作包括创建.读取.更新.删除,即我们通常说的CRUD(Create, Read, Upda ...
- C#-ado.net学习笔记-会有更新
ado.net 通用类对象.在本地内存暂存数据 托管类对象.让本地通用类对象连接数据库,让本地通用类对象和数据库同步 连接数据库 new connection(connectstring) comma ...
随机推荐
- express中间件系统的基本实现
一直觉得express的中间件系统这种流式处理非常形象,就好像加工流水线一样,每个环节都在针对同一个产品的不同部分完成自己的工作,最后得到一个成品.今天就来实现一个简易的[中间件队列]. 一. API ...
- VBA批量导入图片到多Word文档并加标题(会飞的鱼)
感谢会飞的鱼大牛~ Public fp$, obmapp As Object Sub kk() 文件夹浏览器 Application.ScreenUpdating = False Set fso = ...
- 从零开始学安全(三十八)●cobaltstrike生成木马抓肉鸡
链接:https://pan.baidu.com/s/1qstCSM9nO95tFGBsnYFYZw 提取码:w6ih 上面是工具 需要java jdk 在1.8.5 以上 实验环境windows ...
- 从零开始学安全(三十七)●VM汇编环境搭建
需要下载 vm 虚拟机 破解版连接 链接:https://pan.baidu.com/s/1r9MyPkNBmiYhQ8bdUxPmvQ 提取码:2o98 镜像文件和开发环境 链接:https://p ...
- Linux,在不使用U盘的情况下使用wubi.exe程序在Win7上安装ubuntu-14.04.3版系统
本文介绍如何在不使用U盘的情况下使用wubi.exe程序在Win7上安装ubuntu-14.04.3版系统. 花了一天的时间终于安装上了Ubuntu14.04,过程坎坷,是血泪史,开始报“cannot ...
- Sublime 无法安装插件的解决办法
1,打开命令面板 Ctrl + Shift + P 输入:pi 回车 按回车后,出现异常如下图: 解决办法: 1,点击Preferences----Brows Packages ---会到安装目录 ...
- Laravel Excel 实现 Excel-CSV 文件导入导出功能
Laravel Excel 是一款基于 PHPExcel 开发的Laravel框架专用的 Excel/CSV 文件导入导出功能的扩展包,用起来的非常方便. 它的 Github 地址是:https:// ...
- js 动态添加class封装(es6语法)
export function hasClass(el, className) { let reg = new RegExp('(^|\\s)' + className + '(\\s|$)') re ...
- 深海中的STL—mt19937
mt19937 当你第一眼看到这玩意儿的时候 肯定禁不住吐槽:纳尼?这是什么鬼? 确实,这个东西鲜为人知,但是它却有着卓越的性能 简介 mt19937是c++11中加入的新特性 它是一种随机数算法,用 ...
- 推荐一款关于MongoDB日志分析的工具--Mtools
一. 需求背景 MongoDB数据库的强大的文档模型使其成为处理数据的最佳方式.文档适用于广泛的流行数据模型,支持各种各样的场景.文档模型可以包含键值.关系数据集和图形数据集,当然,还可以包含父子关系 ...