关于DataSet事务处理以及SqlDataAdapter四种用法

如果是直接执行SQL语句时,事务很好处理,对于大多数的Erp应用,不能能用SQL来处理数据,所以更新DataSet更为常用,更新单个的DataSet也非常简单,不需要事务的处理,给多个DataSet增加事务多数应用于分布式的程序代码中,下面为在Webservice中更新Winform传递过来的经过压缩的数据集的事务处理代码,多个DataSet 情况。

/// <summary>

/// 更新经过压缩的DataSet

/// </summary>

/// <param >环境变量</param>

/// <param >二进制的DataSet</param>

/// <returns>出现异常,返回一个错误信息</returns>

public object UpdataSet(object[] env, byte[] byt)

{

object info = null;

SqlConnection sqlconn = null;

//定义事务

SqlTransaction transaction = null;

DataSet ds = null;

try

{

ds = md.BytesToDs(byt);

string Url = "数据库连接语名";

sqlconn = new SqlConnection(Url);

sqlconn.Open();

transaction = sqlconn.BeginTransaction(IsolationLevel.ReadCommitted, "transname");//实例化事务

SqlDataAdapter adapter;

SqlCommandBuilder objCommandBuilder;

for (int i = 0; i < ds.Tables.Count; i++)

{

adapter = new SqlDataAdapter("select * from " + ds.Tables[i].TableName + " where 2>3", sqlconn);//传统用法

objCommandBuilder = new SqlCommandBuilder(adapter);

//开始挂起

//挂起操作

adapter.DeleteCommand = new SqlCommand("...删除语句..", sqlconn, transaction);

//adapter的增删查改可以与事务一起用,注意这里没有实例SqlCommand对象所以new SqlCommand

adapter.InsertCommand = new SqlCommand("............", sqlconn, transaction);

adapter.UpdateCommand = new SqlCommand(".............", sqlconn, transaction);

adapter.SelectCommand = new SqlCommand("select * from " + ds.Tables[i].TableName + " where 2>3", sqlconn, transaction);

//以上是adapter的新用法,new SqlCommand后面写sql语句,SqlConnection,还可以写事务...就不用实例SqlCommand对象

//没有实例SqlCommand对象所以获取

adapter.DeleteCommand = objCommandBuilder.GetDeleteCommand();

adapter.InsertCommand = objCommandBuilder.GetInsertCommand();

adapter.UpdateCommand = objCommandBuilder.GetUpdateCommand();

objCommandBuilder.DataAdapter.Update(ds, ds.Tables[i].TableName.ToString());//

}

transaction.Commit();//无误后提交事务

sqlconn.Close();

}

catch (Exception err)

{

Console.Out.WriteLine("存盘时发生错误:" + err.Message);

info = "存盘时发生错误:" + err.Message;

//事务回滚

transaction.Rollback();

}

finally

{

if (sqlconn != null)

{

sqlconn.Close();

}

}

return info;

}

时间: 2024-10-02 22:51:40

关于DataSet事务处理以及SqlDataAdapter四种用法的相关文章

[java]static关键字的四种用法

在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们先来了解一下static关键字及其用法. static关键字 1.修饰成员变量 在我们平时的使用当中,static最常用的功能就是修饰类的属性和方法,让他们成为类的成员属性和方法,我们通常将用static修饰的成员称为类成员或者静态成员,这句话挺起来都点奇怪,其实这是相对于对象的属性和方法来说的.请看下面的例子:(未避

mysql中模糊查询的四种用法介绍

下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] WHERE u_name LIKE '%三%' 将会把u_name为“张三”,“张猫三”.“三脚猫”,“唐三藏”等等有“三”的记录全找出来. 另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件 SELECT * FROM [user] WHERE u_name LIKE

c++中for的四种用法。

#include <algorithm> #include <vector> #include <iostream> using namespace std; int main() { int nArray[] = {0, 1, 2, 3, 4, 5}; std::vector<int> vec(nArray, nArray + 6); // 第一种用法:最原始的语法(用下标) for (int i = 0; i < vec.size(); ++i)

mysql进阶 六 模糊查询的四种用法介绍

mysql中模糊查询的四种用法介绍 这篇文章主要介绍了mysql中模糊查询的四种用法,需要的朋友可以参考下. 下面介绍mysql中模糊查询的四种用法: 1%: 表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] WHERE u_name LIKE '%三%' 将会把u_name为“张三”,“张猫三”.“三脚猫”,“唐三藏”等等有“三”的记录全找出来. 另外,如果需要找出u_name中既有“三”又有

Final基本的四种用法

final关键字代表最终.不可改变的. 常见四种用法:1. 可以用来修饰一个类2. 可以用来修饰一个方法3. 还可以用来修饰一个局部变量4. 还可以用来修饰一个成员变量 Java中有四种权限修饰符: public > protected > (default) > private同一个类(我自己) YES YES YES YES同一个包(我邻居) YES YES YES NO不同包子类(我儿子) YES YES NO NO不同包非子类(陌生人) YES NO NO NO 注意事项:(de

Synchronize 四种用法

Sync 四种用法 https://www.cnblogs.com/lukelook/p/9946065.html Sync 静态和非静态用法 https://blog.csdn.net/wangwang00001/article/details/80100716 原文地址:https://www.cnblogs.com/Jomini/p/12688681.html

C#中this的 四种 用法

C#中的this用法,相信大家应该有用过,但你用过几种?以下是个人总结的this几种用法,欢迎大家拍砖,废话少说,直接列出用法及相关代码. this用法1:限定被相似的名称隐藏的成员 /// <summary> /// /******************************************/ /// /* this用法1:限定被相似的名称隐藏的成员 */ /// /******************************************/ /// </summ

synchronized的四种用法

一 修饰方法  Synchronized修饰一个方法很简单,就是在方法的前面加synchronized,synchronized修饰方法和修饰一个代码块类似,只是作用范围不一样,修饰代码块是大括号括起来的范围,而修饰方法范围是整个函数. 例如: 方法一 public synchronized void method() { // todo } 方法二 public void method() { synchronized(this) { // todo } } 写法一修饰的是一个方法,写法二修饰

C# this关键字的四种用法

用法一  this代表当前类的实例对象 namespace Demo { public class Test { private string scope = "全局变量"; public string getResult() { string scope = "局部变量"; // this代表Test的实例对象 // 所以this.scope对应的是全局变量 // scope对应的是getResult方法内的局部变量 return this.scope + &qu