C#处理Access中事务的方法
作者:baggio7095586 发布时间:2021-07-01 13:43:39
标签:C#,Access,事务
本文实例讲述了C#处理Access中事务的方法。分享给大家供大家参考。具体如下:
Access不能像SQL server一样直接执行多条语句,但是把多条语句绑成事务还是可以一起执行的. 所谓事务,就是把多件事情当做一件事情来处理。也就是大家同在一条船上! 由一个事务来完成多个表的同步操作,要么都执行成功,要么都不成功.下面举个例子,用C#实现Access数据库事务的处理方法: 向一个表提交数据,同时更新另一个表中的数据
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string id = "";
string strCon = System.Configuration.ConfigurationManager.AppSettings["ConnectStr"].ToString();
OleDbConnection con = new OleDbConnection(strCon);
OleDbDataAdapter adp = new OleDbDataAdapter();
OleDbDataAdapter adp1 = new OleDbDataAdapter();
try
{
con.Open();
OleDbTransaction tra = con.BeginTransaction(); //创建事务,开始执行事务
adp = new OleDbDataAdapter("select * from 序号表", con);
adp.SelectCommand.Transaction = tra;
adp1=new OleDbDataAdapter("select * from 节目表", con);
adp1.SelectCommand.Transaction = tra;
OleDbCommandBuilder thisBuilder = new OleDbCommandBuilder(adp);
OleDbCommandBuilder thisBuilder1 = new OleDbCommandBuilder(adp1);
DataSet ds = new DataSet();
adp.Fill(ds,"aa");//添加数据集
id = ds.Tables["aa"].Rows[0][1].ToString();
Int64 s = 0;
s = Convert.ToInt64(id) + 1;
id = s.ToString("0000000#");
ds.Tables["aa"].Rows[0][1] = id;
adp.Update(ds,"aa");//执行修改一个表的事务
adp1.Fill(ds,"bb");
DataRow dr=ds.Tables["bb"].NewRow();
dr["ProID"]=id;
dr["ProName"]="ProName";
dr["ProTime"]="2";
dr["ProIsFinish"]="3";
dr["ProBgColor"]="4";
dr["ProBgPic"]="5";
dr["ProStyle"]="6";
dr["MissionName"]="7";
dr["ProDescription"]="8";
ds.Tables["bb"].Rows.Add(dr);
adp1.Update(ds,"bb");
tra.Commit();//关闭事务
}
catch (Exception ex)
{
}
finally
{
con.Close();
}
}
注:Access的事务不支持自动锁定(经试验已经证实),因此Access最好用于本机的程序,b/s中做好不要用,除非你不用事务处理~~!
希望本文所述对大家的C#程序设计有所帮助。


猜你喜欢
- spring针对Bean之间的循环依赖,有自己的处理方案。关键点就是 * 缓存。当然这种方案不能解决所有的问题,他只能解决Bean单例模式下非
- XML对开发者来说十分的方便,不仅使用起来简单,而且能够及时调试,修改界面之后马上能看到效果。Java设置布局不具有这个优势。但是java却
- 概要: ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-P
- SurfaceView和TextureView均继承于android.view.View与其它View不同的是,两者都能在独立的线程中绘制和
- Lucene从今天开始,我们要开始介绍Lucene中索引构建的流程。因为索引构建的逻辑涉及到的东西非常多,如果从构建入口IndexWrite
- 本文主要给大家介绍了关于RxJava的一些特殊用法,分享出来供大家参考学习,需要的朋友们下面来一起看看吧。一、按钮绑定通过 RxView 可
- public class Count { public static void main(String[] args) { int i =
- 前言上一篇做了一个滑动折叠的Header控件,主要就是练习了一下滑动事件冲突的问题,控件和文章写的都不怎么样。本来想通过这篇文章的控件,整合
- AsnyncLocal与ThreadLocal都是存储线程上下文的变量,但是,在实际使用过程中两者又有区别主要的表现在:AsyncLocal
- 常用依赖 //1.直接依赖第三方开源库,一般是托管在 jitpack 或者 jcenter implementation 'com.
- Springcloud Config什么是springcloud Config  简单来说,Spring
- 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码))一、反射的概述JA
- 本文实例讲述了Java基于swing实现的弹球游戏代码。分享给大家供大家参考。主要功能代码如下:package Game;import ja
- 配置如下: <!--邀请用户送优惠券规则{邀请人规则:[{邀请人:优惠券ID}],使用邀请码人:优惠券ID},按照邀请人数从小到大配置
- int、String的类型转换int -> Stringint i=12345;String s="";第一种方法
- static 表示静态,它可以修饰属性,方法和代码块。1.static修饰属性(类变量),那么这个属性就可以用类名.属性名来访问,也就是使这
- 创建SpringBoot项目在引入Druid之后,根据视频中的教程在application.yaml文件中添加了一些配置(下面的代码是不合乎
- 概述1、邮件相关的标准厂商所提供的 JavaMail 服务程序可以有选择地实现某些邮件协议,常见的邮件协议包括:SMTP(Simple Ma
- 优点1.装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。缺点2.多层装饰比较
- 方法一: view.post(Runnable runnable)使用 view 对象,调用 post 方法即可在主线程中执行里边的代码,p