C#与数据库访问技术总结(十七)

使用DataSet对象访问数据库

  当对DataSet对象进行操作时,DataSet对象会产生副本,所以对DataSet里的数据进行编辑操作不会直接对数据库产生影响,而是将DataRow的状态设置为added、deleted或changed,最终的更新数据源动作将通过DataAdapter对象的update方法来完成。

    DataSet对象的常用方法如下。

  • void AcceptChanges():该方法用来提交DataSet里的数据变化。
  • void clear():该方法用来清空DataSet里的内容。
  • DataSet copy():该方法把DataSet的内容复制到其他DataSet中。
  • DataSet GetChanges():该方法用来获得在DataSet里已经被更改后的数据行,并把这些行填充到Dataset里返回
  • bool HasChanges():如果DataSet在创建后或执行AcceptChanges后,其中的数据没有发生变化,返回True,否则返回False。
  • void RejectChanges():该方法撤销DataSet自从创建或调用AcceptChanges方法后的所有变化。

  DataSet对象一般是和DataAdapter对象配合使用。

  下面的代码演示了如何综合使用DataSet和DataAdapter对象访问数据库。

//省略获得连接对象的代码
 ……
//创建DataAdapter
string sql= " select * from user ";
SqlDataAdapter  sda=new SqlDataAdapter(sql, conn);
// 创建并填充Dataset
DataSet ds=new DataSet();
sda.fill(ds, "user");
//给Dataset创建一个副本,操作对副本进行,以免因误操作而破坏数据
DataSet  dsCopy=ds.Copy();
DataTable  dt=ds.Table["user"];
//对DataTable中的DataRow和DataColumn对象进行操作
……
//最后将更新提交到数据库中
sda.update(ds, "user");

 

     上述代码的主要业务流程如下。

    (1)创建DataAdapter和DataSet对象,并用DataAdapter的SQL语句生成的表填充到  DataSet的DataTable中。

    (2)使用DataTable对表进行操作,例如做增、删、改等动作。

    (3)使用DataAdapter的update语句将更新后的数据提交到数据库中。

    另外,上述代码在操作DataSet前,为DataSet创建了一个副本,用宋避免误操作。

转载于:https://www.cnblogs.com/zi-xing/p/4058529.html

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

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

相关文章

MySQL数据高级查询之连接查询、联合查询、子查询

2019独角兽企业重金招聘Python工程师标准>>> 一、连接查询 连接查询: 将多张表(>2)进行记录的连接(按照某个指定的条件进行数据拼接)。 连接查询的意义: 在用户查看数据的时候,需要显示的数据来自多张表. 连接查询: join, 使用方式: 左表 join 右表;左…

Oracle11g解锁报错SP2-0306-选项无效

普通用户登录isqlplus: (一)在浏览器中输入URL (http://localhost:5560/isqlplus)。显示登录界面 这里只能用普通用户进行登录,因为要用sys登录,必须用sys的DBA身份登录。所以用普通用户SCOTT,但是还未解锁 问题:SP2-0…

java web登录action_JavaWeb中登陆功能

首先我们要JavaWeb登陆的基本流程:JSP页面发送请求——>Servlet——>Servlet通过调用方法从数据库中得到数据并将结果返回页面我们先建立三个jsp页面,包括login.jsp(登陆页面)、index.jsp(显示登陆成功后的信息)、error.jsp(登录失败的页面)&#…

Android Download Manager用法大全

http://www.trinea.cn/android/android-downloadmanager/ http://www.trinea.cn/android/android-downloadmanager-pro/转载于:https://www.cnblogs.com/soaringEveryday/articles/4135204.html

Chrome浏览器无法观看视频,一直提示“adobe flash player 已过期” ?

很多新用户在安装了Chrome浏览器或者更新过的的时候,经常提示“ adobe flash player 已过期”的问题,反复提示,导致无法观看视频。于是从网上也找了很多办法都没有解决。这里给大家提供一个最完美的解决方案。经亲自测试,完美解决…

关于JVM的垃圾回收GC的一些记录

目录 一、JVM内存区域划分 二、从一个基本问题开始引入垃圾回收 三、GC作用的区域 三、如何确定一个对象是否可以被当成垃圾进行回收 (1)引用计数法 (2)可达性分析算法 (3)引用的类型 (3…

同步与互斥

有数据交互的进程之间的关系主要有两种,同步与互斥.所谓互斥,是指在不同进程之间的若干程序片断,当某个进程运行其中一个程序片段时,其它进程就不能运行它们之中的任一程序片段,只能等到该进程运行完这个程序片段后才可以运行.所谓同步,是指在不同进程之间的若干程序片断,它们的…

java 分号 转义_java – 正则表达式和转义和未转义的分隔符

你可以使用正则表达式(?:\\.|[^;\\])*匹配未转义分号之间的所有文本:List matchList new ArrayList();try {Pattern regex Pattern.compile("(?:\\\\.|[^;\\\\])*");Matcher regexMatcher regex.matcher(subjectString);while (regexMatcher.find())…

OpenCV cv::Mat类

using namespace cv; 1、Mat的声明: Mat mMat(rows, cols, type); Mat mMat(Size(width,height), type); type指矩阵中元素的类型,可以使CV_8U(无符号单字节像素),CV_8S(有符号单字节像素)&…

ubuntu-E:Encountered a section with no Package: header的解决办法

ubuntu 11.04 出现了如下错误: E:Encountered a section with no Package: header 终端中输入以下两条命令: sudo rm /var/lib/apt/lists/* -vfsudo apt-get update 执行完了命令之后,软件更新器应该会自动要求更新的,更新便是。 …

java new collection_使用Java 8新增的Predicate操作Collection集合

Java 8 起为 Collection 集合新增了一个 removeIf(Predicate filter) 方法,该方法将会批量删除符合 filter 条件的所有元素。该方法需要一个 Predicate 对象作为参数,Predicate 也是函数式接口,因此可使用 Lambda 表达式作为参数。如下程序示…

codevs1219 骑士遍历(棋盘DP)

题目描述 Description设有一个n*m的棋盘(2≤n≤50,2≤m≤50),如下图,在棋盘上有一个中国象棋马。 规定: 1)马只能走日字 2)马只能向右跳 问给定起点x1,y1和终点x2,y2,求出马从x1,y1出发到x2,y2的…

php显示错误

error_reporting(E_ALL);ini_set(display_errors, 1);//将出错信息输出到一个文本文件ini_set(error_log, dirname(__FILE__) . /error_log.txt);

java ssh免密登录_SSH公钥、私钥配置(SSH免密码登录方式)

1.首先使用想要发起ssh免密访问的用户A登录Linux(简称客户端Linux)2.进入该用户的家目录(cd ~),看是否有.ssh文件夹(linux中以.开头文件夹是隐藏的,使用ll -a进行查看),如果没有则创建(mkdir ~/.ssh),并修改访问权限(chmod 700 ~…

最近学到的一点东西

1 rpc 2 socket,工作很多年了,才明白这货的重要性,不过什么样的通信方式,最底层的连接得用它 3 sip协议 4调试,一定要确认异常出错位置,不能乱猜 5 某些诡异的问题,可以依靠在加一层解决&#x…

win8, VS2013 .NET 4.5在哪找svcutil.exe?

我这个纠结呀,公司用win8, .NET 4.5。想做一个很简单的项目,就是wcf宿主iis,项目根目录下有aspx文件和svc文件。于是参考了一个博客http://www.cnblogs.com/yjmyzz/archive/2008/08/19/1270961.html,[原创]WCF入门级使…

java tbase_使用Java从firebase获取数据

我在下面的代码中遇到了一个问题,该代码几乎逐字地从Firebase SDK Java文档中复制到了工作中.我是一个真正的语言的新手,比如来自PHP和JavaScript的webdev背景的Java.基本上,addListenerForSingleValueEvent没有触发以返回数据.我注意到了这一点,因为系统打印输出没有触发,因此…

错误内存【读书笔记】C程序中常见的内存操作有关的典型编程错误

题记:写这篇博客要主是加深自己对错误内存的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢。 对C/C程序员来讲,内存管理是个不小的挑战,绝对值得慎之又慎,否则让由上万行代码构成的模块…

Spring_HelloWord

环境:IntelliJ 14 ; jdk1.8 Spring操作步骤 1.新建项目---Spring Batch2.IntelliJ会自动加载jar包3.现在就可以在src目录下写Java类文件了4.将相应的类部署在XML配置文件spring-config.xml中 (Eclipse需要手动创建,貌似名为bean.x…

java 按钮组_java中创建一个按钮组,有10个按钮,分别写着0,1,2,,3。。。。9

展开全部用Java创建按钮组32313133353236313431303231363533e59b9ee7ad9431333332643966的程序如下:import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;public class…