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(原子性.一致性.隔离性和持久性) ...
随机推荐
- 1503 - A PRIMARY KEY must include all columns in the table's partitioning function
1503 - A PRIMARY KEY must include all columns in the table's partitioning function 错误的原因:表的主键字段必须包含分 ...
- Java中ArrayDeque,栈与队列
package ch8; import java.util.*; /** * Created by Jiqing on 2016/11/27. */ public class ArrayDequeSt ...
- Target runtime Apache Tomcat v7.0 is not defined.
打开项目,找到.settings--->org.eclipse.wst.common.project.facet.core 修改这个文件中: <?xml version="1.0 ...
- UIButton的常见设置
- (void)setTitle:(NSString *)title forState:(UIControlState)state;设置按钮的文字 - (void)setTitleColor:(UIC ...
- JavaWeb学习计划
1 HTML2 CSS3 JavaScript4 XML5 Tomcat6 Servlet7 HTTP8 Cookie Session9 JSP10 JSTL11 MySQL12 JDBC13 过滤器 ...
- mybatis动态SQL中的sql片段
在mybatis中通过使用SQL片段可以提高代码的重用性,如下情景: 1.创建动态SQL <sql id="sql_count">select count(*)< ...
- spring相关资源
1. 文档中英文 Spring Framework Reference Documentation http://docs.spring.io/spring/docs/4.1.7.RELEASE/sp ...
- Linux计划任务入门详解
Linux操作系统定时任务系统 Cron 入门 cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业.由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动 ...
- vim Project
VIM是Linux和Unix下常用的文本编辑工具,在编写代码和阅读代码中经常使用. 但VIM进行代码项目管理时,没有IDE集成开发工具方便,现在提供一个VIM插件Project,可以对代码项目进行简单 ...
- phalcon: Windows 下 Phalcon dev-tools 配置 和 Phpstorm中配置Phalcon 代码提示, phalcon tools的使用
准备: phalcon-devtools包 下载地址: https://github.com/phalcon/phalcon-devtools 解压到wampserver的www目录 (xampp 用 ...