winform插入sql的事务处理
实现目的:点击按钮,原子性执行两条sql语句,同时成功或同时失败
数据库有这三个字段(忽略已有的一条记录):

一、用事务的sql语句
按钮事件完整代码:
//事务处理插入sql语句
using (SQLiteConnection con = new SQLiteConnection("Data Source=xxx.db3;Pooling=true;FailIfMissing=false;Password=123456"))
{
using (SQLiteCommand cmd = new SQLiteCommand())
{
con.Open();
SQLiteTransaction sqltran = con.BeginTransaction();//用的SQLite数据库,其他数据库相应变化
cmd.Connection = con;
cmd.Transaction = sqltran;
try
{
cmd.CommandText = string.Format("insert into jy_cdjy_workflow(id,cjsbh,status) values (1,2,3)");
cmd.ExecuteNonQuery();
cmd.CommandText = string.Format("insert into jy_cdjy_workflow(id,cjsbh,status) values (4,5,6,6)");//故意多添加一个值,看看错误
cmd.ExecuteNonQuery();
sqltran.Commit();//执行完要提交
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);//抛出的异常消息
sqltran.Rollback();//如果某条sql语句执行不成功,回滚 }
}
}
故意将第二条sql语句写错
点击按钮:

弹出错误,而且也把第一条执行的sql语句回滚了,数据库中没有添加数据

二、没有用事务处理插入sql语句
//没有事务处理插入sql语句
using (SQLiteConnection con = new SQLiteConnection("Data Source=C:/Users/Administrator/Documents/Visual Studio 2010/Projects/gjjy/gjjy/db/gjjy.db3;Pooling=true;FailIfMissing=false;Password=gjjy_jinhetech123"))
{ using (SQLiteCommand cmd = new SQLiteCommand())
{
con.Open();
//SQLiteTransaction sqltran = con.BeginTransaction();
cmd.Connection = con;
//cmd.Transaction = sqltran;
try
{
cmd.CommandText = string.Format("insert into jy_cdjy_workflow(id,cjsbh,status) values (1,2,3)");
cmd.ExecuteNonQuery();
cmd.CommandText = string.Format("insert into jy_cdjy_workflow(id,cjsbh,status) values (4,5,6,6)");
cmd.ExecuteNonQuery();//sqltran.Commit();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
//sqltran.Rollback(); }
} }
点击按钮:

虽然第二条抛出错误,但是第一条sql语句还是成功执行并插入数据库了

winform插入sql的事务处理的更多相关文章
- SQL SERVER事务处理
SQL SERVER事务处理 一.事务定义: 事务是单个的工作单元.如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永久组成部分. 如果事务遇到错误且必须取消或回滚,则所有 ...
- 向已写好的多行插入sql语句中添加字段和值
#region 添加支款方式--向已写好的多行插入sql语句中添加字段和值 public int A_ZhifuFS(int diqu) { ; string strData = @"SEL ...
- SQL Server 事务处理 回滚事务
--创建表: GO CREATE TABLE [dbo].[tb1]( [Id] [int] NOT NULL, [c1] [nvarchar](50) NULL, [c2] [datetime] N ...
- 将DataTable 数据插入 SQL SERVER 数据库
原文:将DataTable 数据插入 SQL SERVER 数据库 以下提供3中方式将DataTable中的数据插入到SQL SERVER 数据库: 一:使用sqlcommand.executenon ...
- c#执行插入sql 时,报错:异常信息:超时时间已到。在操作完成之前超时时间已过或服务器未响应
问题:c#执行插入sql 时,报错:异常信息:超时时间已到.在操作完成之前超时时间已过或服务器未响应 解决: SqlCommand cmd = new SqlCommand(); cmd.Comman ...
- Oracle与SQL Server事务处理的比较
事务处理是所有大型数据库产品的一个关键问题,各数据库厂商都在这个方面花费了很大精力,不同的事务处理方式会导致数据库性能和功能上的巨大差异.事务处理也是数据库管理员与数据库应用程序开发人员必须深刻理解的 ...
- c# + Sql server 事务处理
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位. 通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便 ...
- JAVA插入sql代码
插入数据 import java.sql.*; /** * @version 2012-02-22 * @author */ public class InsertDemo { public stat ...
- sql server 事务处理
事物处理 事务是SQL Server中的单个逻辑单元,一个事务内的所有SQL语句作为一个整体执行,要么全部执行,要么都不执行. 事务有4个属性,称为ACID(原子性.一致性.隔离性和持久性) ...
随机推荐
- oracle linux 下卸载
1. 关闭数据库 shutdown immeidate 2. 停止 Listener lsnrctl stop 3. 停止http服务(可选) service httpd stop 4. 用su或者重 ...
- web设计经验<八>20个设计新手常犯的排版设计误区
很多同学问设哥,为什么别人字体就那么随意放一下就辣么好看,其实排版可有大学问,不是随意放就好看.这就如同配色一样,也有千变万化的学问.相信大家看完Designschool这篇头条热文,一定倍有收获. ...
- Python学习(21)python操作mysql数据库_操作
目录 数据库连接 创建数据库表 数据库插入操作 数据库查询操作 数据库更新操作 删除操作 执行事务 错误处理 数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TEST. 在TEST数 ...
- iOS开发之 几本书
<object_c 编程之道书> <iOS 7 UI Transition Guide> iOS开发指南:从零基础到App Store上架[国内第一本iOS架构设计图书,涵盖i ...
- 关于图片加载非常爽的一个三方控件 fresco,一个三fresco
Hi EveryBody 今天来玩一个非常爽的控件 fresco 到底有多爽呢 接着看就知道了 首先 来看看fresco 是个神马东西 https://github.com/facebook/fre ...
- 【linux命令】:查看系统运行状态,命令top 【转载】
原文:http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316399.html 简介 top命令是Linux下常用的性能分析工具,能够实时显示系 ...
- 转:Google全程面试题目(未完成)
转自:http://kb.cnblogs.com/page/95951/ 经过了三个月的断断续续的面试和准备,最近一阵抓了很多时间努力准备, 本以为最后的一次面试能弥补前面的不足,可惜还是功亏一篑.. ...
- 搭建一个简单的Struts2框架
1 创建一个web项目. 2 导入必要的JAR文件. 放在WEB-INF下lib包里. 3 添加web.xml配置,添加启动配置. <?xml version="1.0" ...
- Machine Learning - 第5周(Neural Networks: Learning)
The Neural Network is one of the most powerful learning algorithms (when a linear classifier doesn't ...
- 抓包工具Fidder设置(移动端抓包)
1.下载安装fiddler,下载链接:http://fiddler2.com/get-fiddler(我用的是免安装的fiddler2) 2.设置fiddler 打开Fiddler, Tool ...