sqlserver 的事务和c#的事务

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 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 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();
                    }
                }
            }
        }

  

本文转自lpxxn博客园博客,原文链接:http://www.cnblogs.com/li-peng/archive/2012/01/30/2331897.html,如需转载请自行联系原作者

相关实践学习
使用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
相关文章
|
存储
SQLServer存储过程中事务的创建
SQLServer存储过程中事务的创建
66 0
|
4月前
|
SQL 数据库 数据安全/隐私保护
SQL Server数据库Owner导致事务复制log reader job无法启动的解决办法
【8月更文挑战第14天】解决SQL Server事务复制Log Reader作业因数据库所有者问题无法启动的方法:首先验证数据库所有者是否有效并具足够权限;若非,使用`ALTER AUTHORIZATION`更改为有效登录名。其次,确认Log Reader使用的登录名拥有读取事务日志所需的角色权限。还需检查复制配置是否准确无误,并验证Log Reader代理的连接信息及参数。重启SQL Server Agent服务或手动启动Log Reader作业亦可能解决问题。最后,审查SQL Server错误日志及Windows事件查看器以获取更多线索。
|
3月前
|
SQL 网络协议 数据库连接
已解决:连接SqlServer出现 provider: Shared Memory Provider, error: 0 - 管道的另一端上无任何进程【C#连接SqlServer踩坑记录】
本文介绍了解决连接SqlServer时出现“provider: Shared Memory Provider, error: 0 - 管道的另一端上无任何进程”错误的步骤,包括更改服务器验证模式、修改sa用户设置、启用TCP/IP协议,以及检查数据库连接语句中的实例名是否正确。此外,还解释了实例名mssqlserver和sqlserver之间的区别,包括它们在默认设置、功能和用途上的差异。
|
3月前
|
SQL 存储 监控
SQLServer事务复制延迟优化之并行(多线程)复制
【9月更文挑战第12天】在SQL Server中,事务复制延迟会影响数据同步性。并行复制可通过多线程处理优化这一问题,提高复制效率。主要优化方法包括:配置分发代理参数、优化网络带宽、调整系统资源、优化数据库设计及定期监控维护。合理实施这些措施可提升数据同步的及时性和可靠性。
|
3月前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
155 0
|
4月前
|
SQL 监控 供应链
|
4月前
|
SQL 数据库连接 网络安全
SQLServer非默认端口下事务复制代理作业服务无法启动的处理
【8月更文挑战第14天】若SQL Server非默认端口下的事务复制代理作业无法启动,可按以下步骤解决:1) 确认服务器连接字符串正确无误,包括非默认端口号;2) 检查防火墙设置,确保允许非默认端口的连接;3) 核实SQL Server配置已启用非默认端口;4) 查阅代理作业日志寻找错误详情;5) 重启SQL Server与Agent服务;6) 使用工具测试非默认端口的连接性。如问题持续,请寻求专业支持。
|
4月前
|
SQL 关系型数据库 MySQL
SQL Server 事务执行、回滚
SQL Server 事务执行、回滚
50 0
|
7月前
|
SQL 存储 数据库连接
C#SQL Server数据库基本操作(增、删、改、查)
C#SQL Server数据库基本操作(增、删、改、查)
408 0
|
7月前
|
存储 开发框架 前端开发
C#开发的全套成熟的LIS系统源码JavaScript+SQLserver 2012区域云LIS系统源码
医院云LIS系统是一套成熟的实验室信息管理系统,目前已在多家三级级医院应用,并不断更新。云LIS系统是为病人为中心、以业务处理为基础、以提高检验科室管理水平和工作效率为目标,将医学检验、科室管理和财务统计等检验科室/实验室所有工作进行整合,全面改善检验科室/实验室的工作现状。
64 0