红色的部分是错误的地方,也就是怎么样把
“System.Data.Common.DbTransaction”强制转换成
“System.Data.SqlClient.SqlTransaction”。
下面是代码。
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using System.Data.SqlClient;
using System.Configuration;
using System.Data.Common;/// <summary>
/// UserAddAndUpdata 的摘要说明
/// </summary>
public class UserAddAndUpdata
{
public UserAddAndUpdata()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
    ///<summary>
    ///公有方法,执行一组SQL语句
    ///</summary>
    ///<param name="Sqlstrings">Sql语句组</param>
    ///<returns>是否成功</returns>    public bool ExecuteSQL(ArrayList SqlStrings)
    {
        bool success = true;
        //obtain the database provider name
        string dataProviderName = BookShopConfiguration.DbProviderName;
        //obtain the database connection string
        string connectionString = BookShopConfiguration.DbConnectionString;
        //create a new data provider factory
        DbProviderFactory factory = DbProviderFactories.GetFactory(dataProviderName);
        //obtain a database specific connection object
        DbConnection conn = factory.CreateConnection();
        //set the connection string
        conn.ConnectionString = connectionString;
        SqlCommand cmd = new SqlCommand();
        SqlTransaction trans = conn.BeginTransaction();
        cmd.Connection = conn;
        cmd.Transaction = trans;
        try
        {
            foreach (String str in SqlStrings)
            {
                cmd.CommandText = str;
                cmd.ExecuteNonQuery();
            }
            trans.Commit();
        }
        catch
        {
            success = false;
            trans.Rollback();
        }
        finally
        {
            if(conn!=null)
                conn.Close();
        }
        return success;
        
     
    }    ///<summary>
    ///公有方法,在一个数据表中插入记录
    ///</summary>
    ///<param name="TableName">表名</param>
    ///<param name="Cols">哈希表,键值(KEY)为字段名,值(value)为字段值</param>
    ///<returns>是否成功</returns>
    public bool Insert(String TableName, Hashtable Cols)
    {
        int Count = 0;
        if (Cols.Count <= 0)
        {
            return true;
        }
        string Fields = "(";
        string Values = "Values(";
        foreach (DictionaryEntry item in Cols)
        {
            if (Count != 0)
            {
                Fields += ",";
                Values += ",";
            }
            Fields += ")";
            Values += ")";
            string SqlString = "Insert into" + TableName + Fields + Values;
            return Convert.ToBoolean(ExecuteSQL(SqlString));        }
    }
    
}

解决方案 »

  1.   

    SqlTransaction trans = conn.BeginTransaction() as SqlTransaction; 
      

  2.   

    问题已经解决,可又出现一个问题
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Collections;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Data.Common;/// <summary>
    /// UserAddAndUpdata 的摘要说明
    /// </summary>
    public class UserAddAndUpdata
    {
    public UserAddAndUpdata()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }
        ///<summary>
        ///公有方法,执行一组SQL语句
        ///</summary>
        ///<param name="Sqlstrings">Sql语句组</param>
        ///<returns>是否成功</returns>    public bool ExecuteSQL(ArrayList SqlStrings)
        {
            bool success = true;
            //obtain the database provider name
            string dataProviderName = BookShopConfiguration.DbProviderName;
            //obtain the database connection string
            string connectionString = BookShopConfiguration.DbConnectionString;
            //create a new data provider factory
            DbProviderFactory factory = DbProviderFactories.GetFactory(dataProviderName);
            //obtain a database specific connection object
            DbConnection conn = factory.CreateConnection();
            //set the connection string
            conn.ConnectionString = connectionString;
            SqlCommand cmd = new SqlCommand();
            SqlTransaction trans = conn.BeginTransaction() as SqlTransaction;
            cmd.Connection = conn as SqlConnection;
            cmd.Transaction = trans;
            try
            {
                foreach (String str in SqlStrings)
                {
                    cmd.CommandText = str;
                    cmd.ExecuteNonQuery();
                }
                trans.Commit();
            }
            catch
            {
                success = false;
                trans.Rollback();
            }
            finally
            {
                if(conn!=null)
                    conn.Close();
            }
            return success;
            
         
        }    ///<summary>
        ///公有方法,在一个数据表中插入记录
        ///</summary>
        ///<param name="TableName">表名</param>
        ///<param name="Cols">哈希表,键值(KEY)为字段名,值(value)为字段值</param>
        ///<returns>是否成功</returns>
        public bool Insert(String TableName, Hashtable Cols)
        {
            int Count = 0;
            if (Cols.Count <= 0)
            {
                return true;
            }
            string Fields = "(";
            string Values = "Values(";
            foreach (DictionaryEntry item in Cols)
            {
                if (Count != 0)
                {
                    Fields += ",";
                    Values += ",";
                }
                Fields += ")";
                Values += ")";
                string SqlString = "Insert into" + TableName + Fields + Values;
                return Convert.ToBoolean(ExecuteSQL(SqlString));
            }
        }
        
    }
    红色部分出错误,页面错误提示
    编译错误 
    说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误信息: CS1502: 与“UserAddAndUpdata.ExecuteSQL(System.Collections.ArrayList)”最匹配的重载方法具有一些无效参数源错误: 行 96:             Values += ")";
    行 97:             string SqlString = "Insert into" + TableName + Fields + Values;
    行 98:             return Convert.ToBoolean(ExecuteSQL(SqlString));
    行 99: 
    行 100:        }
     我是从一本.NET书上的实例中的申请用户的那以部分,添加到自己做的站点中的。