• C#事务 访问数据库(转)


    (C#事务)  

    1、创建事务的结构


    SqlConnection   sqlConnection   =   new   SqlConnection();  
      ...初始化连接  

      //   开启事务  
      SqlTransaction   sqlTransaction   =  
    sqlConnection.BeginTransaction();  
      //   将事务应用于Command  
      SqlCommand
      sqlCommand   =   new   SqlCommand();  
      sqlCommand.Connection   =  
    sqlConnection;  
      sqlCommand.Transaction   =   sqlTransaction;    
     
    try  
      {  
      //   利用sqlcommand进行数据操作  
      ...  
      //   成功提交  

      sqlTransaction.Commit();  
      }  
      catch(Exception   ex)  
      {
     
      //   出错回滚  
      sqlTransaction.Rollback();  
      }  


    2、简单例子


                      {  
                              DataTable   dt   =   new
      DataTable();  
                             
    System.Data.SqlClient.SqlConnection   cnn   =   new  
    System.Data.SqlClient.SqlConnection("连接字符串");  
                             
    System.Data.SqlClient.SqlCommand   cm   =   new  
    System.Data.SqlClient.SqlCommand();  
                             
    cm.Connection   =   cnn;  
                              cnn.Open();  
         
                        System.Data.SqlClient.SqlTransaction   trans   =  
    cnn.BeginTransaction();  
                              try  
                 
                {  
                                      foreach(DataRow   dr   in
      dt.Rows)  
                                     

                                              cm.CommandText   =   "update  
    [表]   set   [数量]   =   @amount   where   productID   =   @productID";  
       
                                         
    cm.Parameters.Add("@amount",SqlDbType.Int);  
                                 
                cm.Parameters["@amount"].Value   =   Convert.ToInt32(dr["amount"]);
     
                                             
    cm.Parameters.Add("@productID",SqlDbType.VarChar);  
                           
                      cm.Parameters["@productID"].Value   =  
    dr["productID"].ToString();  
                                             
    cm.ExecuteNonQuery();  
                                      }  
             
                            trans.Commit();  
                              }  

                              catch  
                              {  
       
                                  trans.Rollback();  
                             
    }  
                              finally  
                              {  

                                      cnn.Close();  
                           
              trans.Dispose();  
                                     
    cnn.Dispose();  
                              }  
                      }


    3、SQl server中的事务例子


    begin transaction
    save transaction A


    insert into demo values('BB','B term')
    rollback
    TRANSACTION A


    create table demo2(name varchar(10),age int)
    insert into
    demo2(name,age) values('lis',1)
    rollback transaction


    insert into demo values('BB','B
    term')


    commit TRANSACTION A


    commit TRANSACTION 


    4、注意


      1。事务必须在连接打开后BeginTransaction();


      2.事务添加到SqlCommand(sqlCommand.Transaction   =  
    sqlTransaction;   )


      3、其他数据库对应做相应调整


      4、可以用微软提供的一个dll,很方便.

  • 相关阅读:
    【InfoPath2007】The form has been closed
    深入浅出Nintex——调用子流程
    深入浅出Nintex——使用查询XML动作
    深入浅出Nintex——使用Call WebService来查询Item ID
    深入浅出Nintex——获得某群组的用户集合
    深入浅出SharePoint2007——Webpart开发
    深入浅出Nintex——获得指定用户的角色
    深入浅出Nintex——使用构建动态字符串动作
    Lucene.net 实现全文搜索
    DotLucene源码浅读笔记(1)补遗:编写简单中文分词器ChineseAnalyzer
  • 原文地址:https://www.cnblogs.com/huhu456/p/2344042.html
Copyright © 2020-2023  润新知