SqlConnection myConnection = new  SqlConnection(adoClass.strConn);
myConnection.Open();SqlTransaction myTrans = myConnection.BeginTransaction();
SqlCommand myCommand = new SqlCommand();
myCommand.Transaction = myTrans;
myCommand.Connection =myConnection;sql="your sql";
myCommand.CommandText =sql;
myCommand.ExecuteNonQuery();
……
sql="your sql";
myCommand.CommandText =sql;
myCommand.ExecuteNonQuery();
……myTrans.Commit();
myConnection.Close();

解决方案 »

  1.   

    你写的数据模块比较的设计有问题,我简单的改了一下,事务用单例模式维护。如果程序是多线成的运行,下面的代码会有些问题。如果是C/S结构的话,客户端通常一个连接对象就足够了。
    namespace ado
    {
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Collections;
    using System.Configuration;
    public class adoClass
    {

    private static SqlConnection objConnection = new SqlConnection("server=localhost;uid=sa;pwd=;database=ddd");
    private static SqlTransaction trans; public static  void BeginTransaction()
    {
    if(trans !=null)//包含有未处理完的事务
    {
    //............你自己处理吧.............
    return;
    }
    if(objConnection.State != System.Data.ConnectionState.Open)
    {
    objConnection .CONNECT.Open();
    }
    trans=objConnection .BeginTransaction();
    } public static  void Commit()
    {
    if(trans != null)
    {
    trans.Commit();
    trans=null;
    }
    } public static  void Rollback()
    {
    if(trans != null)
    {
    trans.Rollback();
    trans=null;
    } }


    //*****************************************************************************************
    //****** 功能名:GetMyDataReader(string strSQL)
    //****** 参数意义:string strSQL sql语句
    //****** 功能描述:返回 SqlDataReader类型
    //****** 日期:2003-9-5           设计:               修改:
    //*****************************************************************************************
    public static SqlDataReader GetMyDataReader(string strSQL)
    {

    SqlCommand objCommand = new SqlCommand(strSQL,objConnection);
    objCommand.Transaction=adoClass.trans;
    objConnection.Open();
    SqlDataReader objReader;
    objReader = objCommand.ExecuteReader(CommandBehavior.CloseConnection);
    return objReader;
    }
    //*****************************************************************************************
    //****** 功能名:GetMyDataSet(string strSQL,string strTable)
    //****** 参数意义:string strSQL sql语句,string strTable dataset中的表名
    //****** 功能描述:返回dataset
    //****** 日期:2003-9-5           设计:               修改:
    //*****************************************************************************************
    public static DataSet GetMyDataSet(string strSQL,string strTable)
    {

    SqlDataAdapter objAdapter = new SqlDataAdapter(strSQL,objConnection);
    DataSet ds = new DataSet();
    objAdapter.Fill(ds,strTable);
    return ds;
    }
    //*****************************************************************************************
    //****** 功能名:GetMyAdapter(string strSQL)
    //****** 参数意义:string strSQL sql语句
    //****** 功能描述:返回SqlDataAdapter
    //****** 日期:2003-9-5           设计:              修改:
    //*****************************************************************************************
    public static SqlDataAdapter GetMyAdapter(string strSQL)
    {
    SqlConnection objConnection = new SqlConnection(strConn);
    SqlDataAdapter objAdapter = new SqlDataAdapter(strSQL,objConnection);
    objAdapter.SelectCommand.Transaction=adoClass.trans();
    return objAdapter;
    }