使用SqlDataAdapter和DataSet维护数据库表数据

使用SqlDataAdapter和DataSet维护数据库表数据一般按照如下步骤操作:

1.建立数据库连接

2.使用sql查询语句创建SqlDataAdapter实例,并利用SqlCommandBuilder自动生成SqlDataAdapter对象的InsertCommand,UpdateCommand,DeleteCommand属性.

3.创建dataset对象,并用SqlDataAdapter对象的Fill方法对dataset进行填充.

4.利用dataset表的属性和方法,对表的数据进行操作

5.调用SqlDataAdapter对象的Update方法,将维护好的表数据更新到数据源,即sql server数据库.

如下demo实现了使用DataAdapterDataSet维护数据库的user表中的记录信息,表的主键为ID,另有字段name, 实现如下维护:

(1) 插入两条新记录(DataRow):记录1124, "Lisi")和记录2125, "ZhangSan"

(2) 更新记录1(key = 124)的内容为(124, "Lisi‘s sister"

(3)删除记录2(key = 125).

using (SqlConnection cn = new SqlConnection("Connectionstring"))
{cn.Open();SqlDataAdapter sda = new SqlDataAdapter("selectcmd", cn);//使用sqlcommandBuilder对象自动创建sda对象的insertCommand,updateCommand,deleteCommandSqlCommandBuilder sqlbulider = new SqlCommandBuilder(sda);DataSet ds = new DataSet();//设置dataset表的主键字段,DataRowCollection方法Find参数是主键列,否则找不到唯一的单行sda.Fill(ds, "tableName");//将隐式query到的数据填充到ds中的表中,表命名为tableName//dateset此处只返回一个表,所以tables数据索引用索引0或表名都可以.ds.Tables["tableName"].PrimaryKey = new DataColumn[] { ds.Tables[0].Columns["ID"] };//设置主键所在的Datacolumn,一般设例如ID这些唯一数据的列为primarykeds.Tables["tableName"].Rows[0]["ID"] = 123;//向表第一行的ID字段赋新值//add a new DataRow at table of datasetDataRow dr_new = ds.Tables[0].NewRow();dr_new["ID"] = 124;dr_new["name"] = "Lisi";ds.Tables[0].Rows.Add(dr_new);//更新表字段值DataRow dr_key124 = ds.Tables[0].Rows.Find(124);dr_key124["name"] = "Lisa's sister";//dr_key124[1] = "Lisa's sister";//add 2nd new DataRow at table of datasetDataRow dr_new2 = ds.Tables[0].NewRow();dr_new["ID"] = 125;dr_new["name"] = "ZhangSan";ds.Tables[0].Rows.Add(dr_new2);//remove the DataRow from table of dataset which the primary key column value is 124.//Find参数为主键列的字段值,参数为主键。是为了一个值只有一个字段与之对应,否则参数不是主键,则可能出现返回多行,而返回对象是Datarow,就报错了,很巧妙啊!DataRow dr_remove = ds.Tables[0].Rows.Find(124);//找到主键是124所在的行返回ds.Tables[0].Rows.Remove(dr_remove);//将维护更新后的表更新到数据库sda.Update(ds, "tableName");
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/772070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Transformer的前世今生 day08(Positional Encoding)

前情提要 Attention的优点:解决了长序列依赖问题,可以并行。Attention的缺点:开销变大了,而且不存在位置关系为了解决Attention中不存在位置关系的缺点,我们通过位置编码的形式加上位置关系 Positional Encoding&…

LinkedIn账号为什么被封?被封后如何解决?

近期会有一些小伙伴说自己遇到了帐号无法登录的情况,其实出现领英帐号被封号(被限制登录)主要会有两类情况,今天就给大家分享一下如果被封该如何解决,强烈建议收藏。 在电脑领英官网或者手机领英APP上,输入领英帐号密码点击登录后…

Python语法中,对函数名字的定义应该遵循什么规则?

在Python语法中,函数名字的定义应遵循以下规则: 标识符命名规则:函数名是一个标识符,因此它必须遵循Python的标识符命名规则。函数名只能包含字母(A-Z,a-z)、数字(0-9)和…

NDI虚拟摄像头的使用

目录 一、软件 二、具体操作 1、启动ScreenCapture 2、启动Webcam 3、选择NDI“源”

系统学习Python——装饰器:“私有“和“公有“属性案例-[验证函数的参数:针对位置参数的一个基本范围测试装饰器]

分类目录:《系统学习Python》总目录 让我们从基本的范围测试实现开始。为了简化步骤,起初我们将编写一个只对位置参数有效的装饰器,并且假设这些参数在每次调用中总是出现在相同的位置。位置参数不能通过关键字名称传递,并且我们在…

HCIP的学习(4)

GRE和MGRE VPN---虚拟专用网络。指依靠ISP(运营商)或其他公有网络基础设施上构建的专用的安全数据通信网络。该网络是属于逻辑上的。​ 核心机制—隧道机制(封装技术) GRE—通用路由封装 ​ 三层隧道技术,并且是属于…

代码随想录 图论

目录 797.所有可能得路径 200.岛屿数量 695.岛屿的最大面积 1020.飞地的数量 130.被围绕的区域 417.太平洋大西洋水流问题 827.最大人工岛 127.单词接龙 841.钥匙和房间 463.岛屿的周长 797.所有可能得路径 797. 所有可能的路径 中等 给你一个有 n 个节点的…

什么是V R美术馆|V R互动体验店加盟|虚拟现实元宇宙

VR美术馆是利用虚拟现实(VR)技术构建的数字化美术馆,通过虚拟展厅和虚拟展览等形式展示艺术作品、举办艺术展览,为用户提供一种沉浸式的艺术体验。用户可以通过穿戴VR头显等设备,在虚拟环境中自由浏览各种艺术作品&…

20240319-1-过拟合与欠拟合

过拟合欠拟合面试题 1. 如何理解高方差与低偏差? 模型的预测误差可以分解为三个部分: 偏差(bias), 方差(variance) 和噪声(noise). 偏差 偏差度量了模型的期望预测与真实结果的偏离程度, 即刻画了学习算法本身的拟合能力。偏差则表现为在特定分布上…

RocketMq方便测试,提供一个controller的接口,支持拉取消息,查看消息内容

通过一个REST API接口动态地启动RocketMQ的消费者,并基于传入的参数(topicName,filterExpression,consumerGroupId)决定要监听哪些消息。在Spring Boot项目中,这通常不是推荐的做法,因为消息消费…

启动Hbase shell时有许多日志信息的解决办法

一、问题描述 在使用HBase时,当我们启动HBase shell时,会显示大量的日志信息,这些日志信息可能会干扰我们的操作,我们希望在启动HBase shell时不显示这些日志信息。 二、解决方案 方案一:修改配置文件 我们可以通过修改HBase的…

数据采集用,集成了主流工业通讯协议

IoTClient 是一个物联网设备通讯协议实现客户端,集成了主流工业通讯协议,包括主流PLC通信读取、ModBus协议、Bacnet协议等。该组件基于.NET Standard 2.0,适用于.NET的跨平台开发,可在Windows、Linux等系统上运行,甚至…

c++初阶------c++代码模块

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

centos7二进制安装openstack train版本双网口五节点

这里写目录标题 材料准备宿主机安装KVM 网络规划硬件规划本案例局限性密码规划虚拟机准备网络准备centos7模板机准备 数据库安装安装rabbitMQ消息队列安装memcached服务安装Etcd安装keystone身份服务创建数据库用户keystone安装keystone组件创建admin并启动keystone监听验证key…

由浅到深认识Java语言(18):权限修饰符包Object类

该文章Github地址:https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.c…

学习网络编程No.15【高级IO之多路转接】

引言: 北京时间:2024/3/19/11:16,若是说记忆有克星的话,那么一定是时间。若是说耐心有克星的话,那么一定是人的心态。连续几天睡眠问题,加上环境影响,上篇博客还有部分知识只能放在该篇博客介绍…

scFEA安装

scFEA: A graph neural network model to estimate cell-wise metabolic using single cell RNA-seq data github链接GitHub - changwn/scFEA: single cell Flux Estimation Analysis (scFEA) Try the below web server! Package Tutorial seurat对象使用scFEAscFEA/scFEA_t…

第 K 小/大 题目总结(持续更新...)

2386.找出数组的第 K 大和 此题为找数组任意子序列第k小和模板 1508. 子数组和排序后的区间和 此题为找数组连续子序列第k小和模板

git cherry pick merge部分提交

cherry pick merge 指定某次提交 1. git history 选择要从哪个分支merge 2. 找到提交记录,选择cherry pick 3.这个时候就可以直接push了

vba单元格

Sub 修改单元格() Dim r1 As Range 定义一个range类型的变量 Set r1 Range(Cells(1, 2), Cells(1, 5)) 1行2列到1行5列 x cells(3,1) 得到指定行列的值 Dim r As Range 定义一个range类型的变量 Set r Range("a1:a4") a1单元格到a4单元格 r.Interior.Color …