sqlserver 的事务和c#的事务

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: sql的事务 1 sql 2 create database model 3 go 4 use model 5 go 6 create table Stu( 7 id int , 8 name varchar(200) 9 )10 go11 select * from Stu12 go13 ...

sql的事务

 1 sql
2 create database model
3 go
4 use model
5 go
6 create table Stu(
7 id int ,
8 name varchar(200)
9 )
10 go
11 select * from Stu
12 go
13 begin transaction cc
14 begin
15 --print @@Trancount
16 insert into Stu (id,name) values(1,'33')
17 insert into Stu (id,name) values('sd','66')
18 if @@error>0
19 rollback transaction cc
20
21 else
22 commit transaction cc
23 end
24 go

c#的事务

创建一个应用台控件程序

 1 static void Main(string[] args)
2 {
3 using (SqlConnection sqlcon = new SqlConnection(@"server=192.168.3.11;database=model;uid=sa;pwd="))
4 {
5 sqlcon.Open();
6 SqlTransaction objtran;
7 objtran = sqlcon.BeginTransaction("Method");
8 SqlCommand objcmd = new SqlCommand();
9 objcmd.Connection = sqlcon;
10 objcmd.Transaction = objtran;
11 try
12 {
13 objcmd.CommandText = "insert into Stu (id,name) values(1,'33')";
14 object a = objcmd.ExecuteScalar();
15 objcmd.CommandText = "insert into Stu (id,name) values(2,'66')";
16 a = objcmd.ExecuteScalar();
17 objcmd.ExecuteScalar();
18 Console.WriteLine(a.ToString());
19 objtran.Commit();
20
21 }
22 catch(Exception ex)
23 {
24 objtran.Rollback();
25 Console.WriteLine(ex.Message);
26 Console.ReadLine();
27 }
28 }
29 Console.ReadLine();
30 }


批量插入

 public void SaveTcpData(DataFormateModel DFM)
        {
            using (SqlConnection _strCon = new SqlConnection(SqlHelper.SqlConnStr))
            {
                _strCon.Open();
                using (SqlTransaction _sqlTransaction = _strCon.BeginTransaction("Method"))
                {
                    SqlCommand _sqlCommand = new SqlCommand();
                    _sqlCommand.Connection = _strCon;
                    _sqlCommand.Transaction = _sqlTransaction;
                    try
                    {
                        _sqlCommand.CommandText = "insert into PointTcpData (PointTcpData_pointID,PointTcpData_X,PointTcpData_Y,PointTcpData_Z,SavaeTime) values ("
                                                    + DFM.PointID + "," + DFM.PointX + "," + DFM.PointY + "," + DFM.PointZ + ",'" + DateTime.Now.ToString() + "')  select   @@IDENTITY   as   'Identity'";       
                        int _identityID = Convert.ToInt32(_sqlCommand.ExecuteScalar());
                        DataTable _dt = new DataTable();
                        _dt.Columns.Add(new DataColumn("PointTcpDataAttach_ID", typeof(int)));
                        _dt.Columns.Add(new DataColumn("PointTcpDataID", typeof(int)));
                        _dt.Columns.Add(new DataColumn("PointTcpDataAttach_Gold", typeof(float)));
                        _dt.Columns.Add(new DataColumn("PointTcpDataAttach_Max", typeof(float)));
                        _dt.Columns.Add(new DataColumn("PointTcpDataAttach_Std", typeof(float)));

                        DFM.OtherInfo.ForEach(x =>
                            {
                                DataRow _dr = _dt.NewRow();
                                _dr["PointTcpDataID"] = _identityID;
                                _dr["PointTcpDataAttach_Gold"] = x.Gold;
                                _dr["PointTcpDataAttach_Max"] = x.Max;
                                _dr["PointTcpDataAttach_Std"] = x.Std;
                                _dt.Rows.Add(_dr);
                            });
                        using (SqlBulkCopy _sqlcopy = new SqlBulkCopy(_strCon, SqlBulkCopyOptions.Default, _sqlTransaction))
                        {
                            _sqlcopy.BatchSize = _dt.Rows.Count;
                            _sqlcopy.DestinationTableName = "PointTcpDataAttach";
                            _sqlcopy.WriteToServer(_dt);
                        }

                        _sqlTransaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        _sqlTransaction.Rollback();
                    }
                }
            }
        }

  

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
7月前
|
存储
SQLServer存储过程中事务的创建
SQLServer存储过程中事务的创建
51 0
|
10月前
|
关系型数据库 MySQL 数据库
mysql数据库-事务
事务 事务的基本介绍 1.概念: 如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败 操作 1.开启事务:start transaction 2.回滚:rollback 3.提交:commit 自动提交和手动提交 查询事务默认提交方式 1=自动,0=手动 SELECT @@autocommit 修改默认提交 set@@autocommit =xx 事务的四大特征 1.原子性:是不可分割的最小操作单位,要么同时成功,要么失败 2.持久性:当事务提交或回滚后,数据库会持久化的保存数据 3.隔离性:多个事务之间。相互独立 4.一致性:事务操作前后,数据总量不变
51 1
|
10月前
|
SQL 安全 关系型数据库
SqlServer事务详解(事务隔离性和隔离级别详解)(下)
SqlServer事务详解(事务隔离性和隔离级别详解)(下)
|
10月前
|
SQL Oracle 关系型数据库
SqlServer事务详解(事务隔离性和隔离级别详解)(上)
SqlServer事务详解(事务隔离性和隔离级别详解)
|
11月前
|
数据库
【数据库中事务的隔离级别】—— 每天一点小知识
【数据库中事务的隔离级别】—— 每天一点小知识
|
SQL Java 关系型数据库
分布式事务之数据库事务与JDBC事务实现(一)
分布式事务之数据库事务与JDBC事务实现
分布式事务之数据库事务与JDBC事务实现(一)
|
SQL 关系型数据库 MySQL
数据库 - 事务 - 隔离级别 - 汇总
数据库 - 事务 - 隔离级别 - 汇总
数据库 - 事务 - 隔离级别 - 汇总
|
SQL 关系型数据库 MySQL
MySQL数据库之事务(下)
一、事务的概念 事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个 整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。 事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时,事务是最小的控制单元。 事务适用于多用户同时操作的数据库系统的场景,如银行、保险公司及证券交易系统等等。 事务通过事务的整体性以保证数据的一致性。 事务能够提高在向表中更新和插入信息期间的可靠性。
152 0
|
存储 SQL Oracle
MySQL数据库之事务(上)
一、事务的概念 事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个 整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。 事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时,事务是最小的控制单元。 事务适用于多用户同时操作的数据库系统的场景,如银行、保险公司及证券交易系统等等。 事务通过事务的整体性以保证数据的一致性。 事务能够提高在向表中更新和插入信息期间的可靠性。
142 0
|
存储 SQL 关系型数据库
MySQL数据库——事务
用户定义了一系列执行SQL语句的操作,这些操作要么完全的执行,要么全部都不执行,他是一个不可分割的工作执行单位,这也是为了保证数据库的完整性。MySQL 事务主要用于处理操作量大,复杂度高的数据。
349 1
MySQL数据库——事务