前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sqlserver 的事务和c#的事务

sqlserver 的事务和c#的事务

作者头像
lpxxn
发布2018-01-31 10:33:17
1.1K0
发布2018-01-31 10:33:17
举报
文章被收录于专栏:技术之路技术之路

sql的事务

代码语言:javascript
复制
 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#的事务

创建一个应用台控件程序

代码语言:javascript
复制
 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         }

批量插入

代码语言:javascript
复制
 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();
                    }
                }
            }
        }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-01-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档