DBHelper

using System;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

/// <summary>
/// 操作数据库 的摘要说明
/// </summary>
public class DataBase
{
    //连接字符串
    public static string Strconnection = "server=.;database=Test;uid=sa;pwd=123456";

    ////创建连接
    //public static SqlConnection ConDataBase = new SqlConnection(Strconnection);
    public static string strPasswordKey = "f?~ 1_?}";
    public DataBase()
    {

        //
        // TODO: 在此处添加构造函数逻辑
        //

    }

    /// <summary>
    /// 执行查询并将查询结果填充到DataSet
    /// </summary>
    /// <param name="CmdType">命令类型 分sql查询语句或存储过程</param>
    /// <param name="StrCmdText">命令字符串</param>
    /// <param name="BolIfPage">是否翻页,true是,false否</param>
    /// <param name="InPageSize">每页显示的记录数,无翻页则为0</param>
    /// <param name="InPageCount">总页数,无翻页则为0</param>
    /// <param name="ParmObj">参数</param>
    /// <returns>返回结果集DataSet</returns>
    public static DataSet ExecuteDataSet(CommandType CmdType, string StrCmdText, bool BolIfPage, int InPageSize, int InPageCount, params SqlParameter[] ParmObj)
    {
        return ExecuteDataSet(Strconnection, CmdType, StrCmdText, BolIfPage, InPageSize, InPageCount, ParmObj);
    }

    /// <summary>
    /// 执行查询并将查询结果填充到DataSet
    /// </summary>
    /// <param name="CmdType">命令类型 分sql查询语句或存储过程</param>
    /// <param name="StrCmdText">命令字符串</param>
    /// <param name="ParmObj">参数</param>
    /// <returns>返回结果集DataSet</returns>
    public static DataSet ExecuteDataSet(CommandType CmdType, string StrCmdText, params SqlParameter[] ParmObj)
    {
        return ExecuteDataSet(Strconnection, CmdType, StrCmdText, false, 0, 0, ParmObj);
    }

    /// <summary>
    /// 执行查询并将查询结果填充到DataSet
    /// </summary>
    /// <param name="StrCon">连接字符串</param>
    /// <param name="CmdType">命令类型</param>
    /// <param name="StrCmdText">命令语句</param>
    /// <param name="ParmObj">参数</param>
    /// <param name="BolIfPage">是否翻页,true是,false否</param>
    /// <param name="InPageSize">每页显示的记录数,无翻页则为0</param>
    /// <param name="InPageCount">总页数,无翻页则为0</param>
    /// <returns>返回结果集DataSet</returns>
    public static DataSet ExecuteDataSet(string StrCon, CommandType CmdType, string StrCmdText, bool BolIfPage, int InPageSize, int InPageCount, params SqlParameter[] ParmObj)
    {
        //StrCon = ConnDb.conn.Decrypt("jxhdjxxjsyxgs", StrCon);
        SqlCommand CmbObj = new SqlCommand();
        using (SqlConnection ConObj = new SqlConnection(StrCon))
        {
            PrepareCommand(CmbObj, ConObj, CmdType, StrCmdText, ParmObj);
            SqlDataAdapter DadObj = new SqlDataAdapter();
            DadObj.SelectCommand = CmbObj;
            DataSet DstObj = new DataSet();
            if (BolIfPage)
            {
                DadObj.Fill(DstObj, InPageCount, InPageSize, "menu");
            }
            else
            {
                DadObj.Fill(DstObj);
            }
            CmbObj.Parameters.Clear();
            DadObj.Dispose();
            return DstObj;
        }
    }


    /// <summary>
    /// 执行SQL操作如:插入,删除或存储过程;操作成功返回受影响数;否则返回0
    /// </summary>
    /// <param name="CmdType">命令类型</param>
    /// <param name="StrCmdText">命令语句</param>
    /// <param name="ParmObj">参数</param>
    /// <returns>操作成功返回受影响数;否则返回0</returns>
    public static int ExecuteNonQuerys(CommandType CmdType, string StrCmdText, params SqlParameter[] ParmObj)
    {
        return ExecuteNonQuerys(Strconnection, CmdType, StrCmdText, ParmObj);
    }


    /// <summary>
    ///  执行SQL操作如:插入,删除或存储过程;操作成功返回受影响数;否则返回0
    /// </summary>
    /// <param name="CmdType">命令类型</param>
    /// <param name="StrCmdText">命令语句</param>
    /// <param name="ParmObj">参数</param>
    /// <returns>操作成功返回受影响数;否则返回0</returns>
    public static int ExecuteNonQuerys(string StrCon, CommandType CmdType, string StrCmdText, params SqlParameter[] ParmObj)
    {
        //StrCon = ConnDb.conn.Decrypt("jxhdjxxjsyxgs", StrCon);
        SqlCommand CmbObj = new SqlCommand();
        CmbObj.CommandTimeout = 60;
        using (SqlConnection ConObj = new SqlConnection(StrCon))
        {
            PrepareCommand(CmbObj, ConObj, CmdType, StrCmdText, ParmObj);
            try
            {
                int i = CmbObj.ExecuteNonQuery();
                CmbObj.Parameters.Clear();
                return i;
            }
            catch
            {
                return 0;
            }
        }
    }

    /// <summary>
    /// 执行SQL操作如:插入,删除或存储过程;操作成功返回1;否则返回0
    /// </summary>
    /// <param name="CmdType">命令类型</param>
    /// <param name="StrCmdText">命令语句</param>
    /// <param name="ParmObj">参数</param>
    /// <returns>操作成功返回1;否则返回0</returns>
    public static int ExecuteNonQuery(CommandType CmdType, string StrCmdText, params SqlParameter[] ParmObj)
    {
        return ExecuteNonQuery(Strconnection, CmdType, StrCmdText, ParmObj);
    }

    /// <summary>
    ///  执行SQL操作如:插入,删除或存储过程;操作成功返回1;否则返回0
    /// </summary>
    /// <param name="CmdType">命令类型</param>
    /// <param name="StrCmdText">命令语句</param>
    /// <param name="ParmObj">参数</param>
    /// <returns>操作成功返回1;否则返回0</returns>
    public static int ExecuteNonQuery(string StrCon, CommandType CmdType, string StrCmdText, params SqlParameter[] ParmObj)
    {
        //StrCon = ConnDb.conn.Decrypt("jxhdjxxjsyxgs", StrCon);
        SqlCommand CmbObj = new SqlCommand();
        CmbObj.CommandTimeout = 60;
        using (SqlConnection ConObj = new SqlConnection(StrCon))
        {
            PrepareCommand(CmbObj, ConObj, CmdType, StrCmdText, ParmObj);
            try
            {
                CmbObj.ExecuteNonQuery();
                CmbObj.Parameters.Clear();
                return 1;
            }
            catch
            {
                return 0;
            }
        }
    }

    /// <summary>
    /// 操作存储过程
    /// </summary>
    /// <param name="strSql">存储过程名或SQL命令</param>
    /// <param name="ParmObj">参数,无参为null</param>
    /// <returns>操作成功返回true;否则返回false</returns>
    public static bool ExecuteProc(string strSql, params SqlParameter[] ParmObj)
    {
        return (ExecuteNonQuery(CommandType.StoredProcedure, strSql, ParmObj) > 0);
    }

    /// <summary>
    /// 操作存储过程
    /// </summary>
    /// <param name="strSql">存储过程名或SQL命令</param>
    /// <returns>操作成功返回true;否则返回false</returns>
    public static bool ExecuteProc(string strSql)
    {
        return (ExecuteNonQuery(CommandType.StoredProcedure, strSql, null) > 0);
    }

    /// <summary>
    /// 执行查询并将查询,返回SqlDataReader
    /// </summary>
    /// <param name="CmdType">执行类型</param>
    /// <param name="StrCmdText">存储过程名或SQL命令</param>
    /// <param name="ParmObj">参数,无参数为null</param>
    /// <returns>返回SqlDataReader</returns>
    public static SqlDataReader ExecuteReader(CommandType CmdType, string StrCmdText, params SqlParameter[] ParmObj)
    {
        return ExecuteReader(Strconnection, CmdType, StrCmdText, ParmObj);
    }

    /// <summary>
    /// 执行查询并将查询,返回SqlDataReader
    /// </summary>
    /// <param name="StrCon">连接字符串</param>
    /// <param name="CmdType">执行类型</param>
    /// <param name="StrCmdText">存储过程名或SQL命令</param>
    /// <param name="ParmObj">参数,无参数为null</param>
    /// <returns>返回SqlDataReader</returns>
    public static SqlDataReader ExecuteReader(string StrCon, CommandType CmdType, string StrCmdText, params SqlParameter[] ParmObj)
    {
        //StrCon = ConnDb.conn.Decrypt("jxhdjxxjsyxgs", StrCon);
        SqlDataReader DtrObj;
        SqlCommand CmdObj = new SqlCommand();
        SqlConnection ConObj = new SqlConnection(StrCon);
        try
        {
            PrepareCommand(CmdObj, ConObj, CmdType, StrCmdText, ParmObj);
            SqlDataReader reader = CmdObj.ExecuteReader(CommandBehavior.CloseConnection);
            CmdObj.Parameters.Clear();
            DtrObj = reader;
        }
        catch
        {
            throw;
        }
        return DtrObj;
    }

    /// <summary>
    /// PrepareCommand
    /// </summary>
    /// <param name="CmdObj">SqlCommand</param>
    /// <param name="ConObj">SqlConnection</param>
    /// <param name="CmdType">执行类型</param>
    /// <param name="StrCmdText">存储过程名或SQL命令</param>
    /// <param name="ParmObj">参数,无参数为null</param>
    private static void PrepareCommand(SqlCommand CmdObj, SqlConnection ConObj, CommandType CmdType, string StrCmdText, SqlParameter[] ParmObj)
    {
        if (ConObj.State != ConnectionState.Open)
        {
            ConObj.Open();
        }
        CmdObj.Connection = ConObj;
        CmdObj.CommandText = StrCmdText;
        CmdObj.CommandTimeout = 1000;
        CmdObj.CommandType = CmdType;
        if (ParmObj != null)
        {
            foreach (SqlParameter parameter in ParmObj)
            {
                CmdObj.Parameters.Add(parameter);
            }
        }
    }

    /// <summary>
    /// 操作存储过程或SQL返回结果集的第一行第一列
    /// </summary>
    /// <param name="CmdType">执行类型</param>
    /// <param name="StrCmdText">存储过程名或SQL命令</param>
    /// <param name="ParmObj">参数,无参数为null</param>
    /// <returns>返回结果集</returns>
    public static object ExecuteScalar(CommandType CmdType, string StrCmdText, params SqlParameter[] ParmObj)
    {
        return ExecuteScalar(Strconnection, CmdType, StrCmdText, ParmObj);
    }

    /// <summary>
    /// 操作存储过程或SQL返回结果集的第一行第一列
    /// </summary>
    /// <param name="CmdType">执行类型</param>
    /// <param name="StrCmdText">存储过程名或SQL命令</param>
    /// <param name="ParmObj">参数,无参数为null</param>
    /// <returns>返回结果集object</returns>
    public static object ExecuteScalar(SqlConnection ConObj, CommandType CmdType, string StrCmdText, params SqlParameter[] ParmObj)
    {
        SqlCommand CmdObj = new SqlCommand();
        PrepareCommand(CmdObj, ConObj, CmdType, StrCmdText, ParmObj);
        object obj2 = CmdObj.ExecuteScalar();
        CmdObj.Parameters.Clear();
        return obj2;
    }

    /// <summary>
    /// 操作存储过程或SQL返回结果集的第一行第一列
    /// </summary>
    /// <param name="StrCon">连接字符串</param>
    /// <param name="CmdType">执行类型</param>
    /// <param name="StrCmdText">存储过程名或SQL命令</param>
    /// <param name="ParmObj">参数,无参数为null</param>
    /// <returns>返回结果集object</returns>
    public static object ExecuteScalar(string StrCon, CommandType CmdType, string StrCmdText, params SqlParameter[] ParmObj)
    {
        //StrCon = ConnDb.conn.Decrypt("jxhdjxxjsyxgs", StrCon);
        SqlCommand CmdObj = new SqlCommand();
        using (SqlConnection ConObj = new SqlConnection(StrCon))
        {
            PrepareCommand(CmdObj, ConObj, CmdType, StrCmdText, ParmObj);
            object obj2 = CmdObj.ExecuteScalar();
            CmdObj.Parameters.Clear();
            return obj2;
        }
    }

    /// <summary>
    /// 操作存储过程或SQL返回结果集DataTable
    /// </summary>
    /// <param name="CmdType">执行类型</param>
    /// <param name="StrCmdText">存储过程名或SQL命令</param>
    /// <param name="ParmObj">参数,无参数为null</param>
    /// <returns>返回结果集DataTable</returns>
    public static DataTable ExecuteTable(CommandType CmdType, string StrCmdText, params SqlParameter[] ParmObj)
    {
        return ExecuteTable(Strconnection, CmdType, StrCmdText, ParmObj);
    }

    /// <summary>
    /// 操作存储过程或SQL返回结果集DataTable
    /// </summary>
    /// <param name="ConObj">SqlConnection</param>
    /// <param name="CmdType">执行类型</param>
    /// <param name="StrCmdText">存储过程名或SQL命令</param>
    /// <param name="ParmObj">参数,无参数为null</param>
    /// <returns>返回结果集DataTable</returns>
    public static DataTable ExecuteTable(SqlConnection ConObj, CommandType CmdType, string StrCmdText, params SqlParameter[] ParmObj)
    {
        SqlCommand CmdObj = new SqlCommand();
        PrepareCommand(CmdObj, ConObj, CmdType, StrCmdText, ParmObj);
        SqlDataAdapter DadObj = new SqlDataAdapter();
        DadObj.SelectCommand = CmdObj;
        DataSet DstObj = new DataSet();
        DadObj.Fill(DstObj, "Result");
        CmdObj.Parameters.Clear();
        return DstObj.Tables["Result"];
    }

    /// <summary>
    /// 操作存储过程或SQL返回结果集DataTable
    /// </summary>
    /// <param name="StrCon">连接字符串</param>
    /// <param name="CmdType">执行类型</param>
    /// <param name="StrCmdText">存储过程名或SQL命令</param>
    /// <param name="parm">参数,无参数为null</param>
    /// <returns>返回结果集DataTable</returns>
    public static DataTable ExecuteTable(string StrCon, CommandType CmdType, string StrCmdText, params SqlParameter[] ParmObj)
    {
        //StrCon = ConnDb.conn.Decrypt("jxhdjxxjsyxgs", StrCon);
        SqlCommand CmdObj = new SqlCommand();
        using (SqlConnection ConObj = new SqlConnection(StrCon))
        {
            PrepareCommand(CmdObj, ConObj, CmdType, StrCmdText, ParmObj);
            SqlDataAdapter DadObj = new SqlDataAdapter();
            DadObj.SelectCommand = CmdObj;
            DataSet DstObj = new DataSet();
            DadObj.Fill(DstObj, "Result");
            CmdObj.Parameters.Clear();
            if (DstObj.Tables.Count > 0)
            {
                return DstObj.Tables["Result"];
            }
            return null;
        }
    }

    /// <summary>
    /// 查询记录是否存在//相同记录
    /// </summary>
    /// <param name="CmdType">执行类型</param>
    /// <param name="StrCmdText">SQL语句或存储过程</param>
    /// <param name="ParmObj">查询参数</param>
    /// <returns>存在返回true 否则false</returns>
    public static bool Exists(CommandType CmdType, string StrCmdText, params SqlParameter[] ParmObj)
    {
        bool Bolfolg = true;

        if ((ObjectToInt32(ExecuteScalar(CmdType, StrCmdText, ParmObj)) > 0))
        {
            Bolfolg = true;
        }
        else
        {
            Bolfolg = false;
        }
        return Bolfolg;
    }

    /// <summary>
    /// 查询记录是否存在//相同记录
    /// </summary>
    /// <param name="strSql">查询sql语句</param>
    /// <returns>存在返回true 否则false</returns>
    public static bool ExistsSql(string strSql)
    {
        return Exists(CommandType.Text, strSql, null);
    }

    /// <summary>
    /// 获取表里某字段的最大值
    /// </summary>
    /// <param name="tableName">表名</param>
    /// <param name="fieldName">字段名</param>
    /// <returns>该字段在表里的最大值</returns>
    public static int GetMaxId(string tableName, string fieldName)
    {
        string query = "select max(" + fieldName + ") from " + tableName;
        return ObjectToInt32(ExecuteScalar(CommandType.Text, query, null));
    }

    /// <summary>
    /// 将数据对象转换成整形
    /// </summary>
    /// <param name="obj"></param>
    /// <returns>返回-1表示转换失败</returns>
    public static int ObjectToInt32(object obj)
    {
        int result = 0;
        try
        {
            if (!(object.Equals(obj, null) || object.Equals(obj, DBNull.Value)))
            {
                int.TryParse(obj.ToString(), out result);
            }
            return result;
        }
        catch
        {
            return -1;
        }
    }

    /// <summary>
    /// 读取sql server数据库结构 输出表名
    /// </summary>
    /// <param name="sType">结构类型 Table表 Views视图</param>
    /// <returns></returns>
    public static DataTable GetSchemaTable()
    {
        DataTable DtblObj;
        using (SqlConnection ConObj = new SqlConnection(Strconnection))
        {
            if (ConObj.State != ConnectionState.Open)
            {
                ConObj.Open();
            }
            try
            {
                DtblObj = ConObj.GetSchema("TABLES");
            }
            catch
            {
                DtblObj = null;
            }
            finally
            {
                ConObj.Close();
            }
        }
        return DtblObj;
    }

    /// <summary>
    /// MD5,SHA1加密
    /// </summary>
    /// <param name="StrPassword">要加密的密码</param>
    /// <returns>返回加密后的字符串</returns>
    public static string Encrypt(string StrPassword)
    {
        string str = "";
        FormsAuthenticationTicket ticket = new System.Web.Security.FormsAuthenticationTicket(StrPassword, true, 2);
        str = FormsAuthentication.Encrypt(ticket).ToString();
        return str;
    }

    /// <summary>
    /// MD5,SHA1加密
    /// </summary>
    /// <param name="StrPassword">要加密的密码</param>
    /// <param name="InFormat">0 为 SHA1,1 为 MD5</param>
    /// <returns>返回加密后的字符串</returns>
    public static string Encrypt(string StrPassword, int InFormat)
    {
        string str = "";
        switch (InFormat)
        {
            case 0:
                str = FormsAuthentication.HashPasswordForStoringInConfigFile(StrPassword, "SHA1");
                break;
            case 1:
                str = FormsAuthentication.HashPasswordForStoringInConfigFile(StrPassword, "MD5");
                break;
        }
        return str;
    }

    /// <summary>
    /// 绑定DropDownList控件,取得选中值
    /// </summary>
    /// <param name="str_Value">数据库表示Value值字段</param>
    /// <param name="str_Text">数据库表示Text值字段</param>
    /// <param name="str_Value_Field"></param>
    /// <param name="str_Sql"></param>
    /// <param name="myDropDownList"></param>
    public static void SelectBindDropDownListValue(string str_Value, string str_Text, string str_Value_Field, string str_Sql, DropDownList myDropDownList)
    {
        BindDropDownList(str_Value, str_Text, str_Sql, myDropDownList);// 绑定myDropDownList控件
        if (myDropDownList.Items.Count > 0)
        {
            myDropDownList.Items[0].Selected = false;
            for (int i = 0; i < myDropDownList.Items.Count; i++)
            {
                if (str_Value_Field == myDropDownList.Items[i].Value)
                {
                    myDropDownList.Items[i].Selected = true;
                    break;
                }
            }
        }
    }

    /// <summary>
    /// 绑定CheckBoxList控件并显示数据,CheckBoxList控件Value,Text值将分别等于等于str_Value,str_Text值
    /// </summary>
    /// <param name="str_Value">绑定DropDownList控件Value值相对应数据库表字段名</param>
    /// <param name="str_Text">绑定DropDownList控件Text值相对应数据库表字段名</param>
    /// <param name="sql">Select-SQL语句</param>
    /// <param name="myDropDownList">DropDownList控件id值</param>
    public static void BindCheckBoxList(string str_Value, string str_Text, string sql, CheckBoxList myCheckBoxList)
    {
        myCheckBoxList.DataSource = ExecuteDataSet(CommandType.Text, sql, null);
        myCheckBoxList.DataValueField = str_Value;
        myCheckBoxList.DataTextField = str_Text;
        myCheckBoxList.DataBind();
    }

    /// <summary>
    /// 绑定DropDownList控件并显示数据,DropDownList控件Value,Text值将分别等于等于str_Value,str_Text值
    /// </summary>
    /// <param name="str_Value">绑定DropDownList控件Value值相对应数据库表字段名</param>
    /// <param name="str_Text">绑定DropDownList控件Text值相对应数据库表字段名</param>
    /// <param name="sql">Select-SQL语句</param>
    /// <param name="myDropDownList">DropDownList控件id值</param>
    public static void BindDropDownList(string str_Value, string str_Text, string sql, DropDownList myDropDownList)
    {
        myDropDownList.DataSource = ExecuteDataSet(CommandType.Text, sql, null);
        myDropDownList.DataValueField = str_Value;
        myDropDownList.DataTextField = str_Text;
        myDropDownList.DataBind();
    }


    /// <summary>
    /// 查询记录指定值
    /// </summary>
    /// <param name="Strsql">SQL语句</param>
    /// <returns>返回查询的值</returns>
    public static string SelectObject(string Strsql)
    {
        using (SqlConnection ConObj = new SqlConnection( Strconnection))
        {
            ConObj.Open();
            SqlCommand ComObj = new SqlCommand(Strsql, ConObj);
            object obj = ComObj.ExecuteScalar();
            return (obj == null) ? "" : obj.ToString();
        }
    }

    /// <summary>
    /// 执行SQL,返回查询结果
    /// </summary>
    /// <param name="sql">Select-SQL语句</param>
    public static string Exec(string sql)
    {
        string show = "";
        using (SqlConnection con = new SqlConnection( Strconnection))
        {
            try
            {
                con.Open();
                SqlCommand Com = new SqlCommand(sql, con);
                show = Com.ExecuteScalar().ToString();

            }
            catch
            {
                show = "";
            }
            return show.ToString();
        }
    }
    /// <summary>
    /// 执行SQL,返回查询结果
    /// </summary>
    /// <param name="sql">Select-SQL语句</param>
    public static string Exec(string sql, params SqlParameter[] ParmObj)
    {
        string show = "";
        using (SqlConnection con = new SqlConnection( Strconnection))
        {
            try
            {
                con.Open();
                SqlCommand Com = new SqlCommand(sql, con);
                if (ParmObj != null)
                {
                    foreach (SqlParameter parameter in ParmObj)
                    {
                        Com.Parameters.Add(parameter);
                    }
                }
                show = Com.ExecuteScalar().ToString();

            }
            catch
            {
                show = "";
            }
            return show.ToString();
        }
    }
    /// <summary>
    /// 执行SQL,返回查询结果
    /// </summary>
    /// <param name="sql">Select-SQL语句</param>
    public static string Exec(string strConnection, string sql)
    {
        string show = "";
        using (SqlConnection con = new SqlConnection( strConnection))
        {
            try
            {
                con.Open();
                SqlCommand Com = new SqlCommand(sql, con);
                show = Com.ExecuteScalar().ToString();

            }
            catch
            {
                show = "";
            }
            return show.ToString();
        }
    }
    /// <summary>
    /// 事务提交多条SQL语句
    /// </summary>
    /// <param name="sqls">SQL语句</param>
    /// <returns></returns>   
    public static bool Transaction(params string[] sqls)
    {
        using (SqlConnection ConObj = new SqlConnection( Strconnection))
        {
            SqlCommand CmbObj = new SqlCommand();
            CmbObj.CommandTimeout = 60;
            CmbObj.Connection = ConObj;
            ConObj.Open();
            bool isok = true;
            CmbObj.Transaction = ConObj.BeginTransaction();
            try
            {
                foreach (string sql in sqls)
                {
                    if (sql.Length == 0) { continue; }
                    //PrepareCommand(CmbObj, ConObj, CommandType.Text, sql, null);
                    if (ConObj.State != ConnectionState.Open)
                    {
                        ConObj.Open();
                    }
                    CmbObj.CommandTimeout = 1000;
                    CmbObj.CommandText = sql;
                    CmbObj.CommandType = CommandType.Text;
                    CmbObj.ExecuteNonQuery();
                    CmbObj.Parameters.Clear();
                }
                CmbObj.Transaction.Commit();
                isok = true;
            }
            catch
            {
                CmbObj.Transaction.Rollback();
                isok = false;
            }
            finally
            {
                CmbObj.Dispose();
                ConObj.Close();
            }
            return isok;
        }
    }
    /// <summary>
    /// 事务提交多条SQL语句
    /// </summary>
    /// <param name="sqls">SQL语句</param>
    /// <returns></returns>   
    public static bool TransactionOther(string strConnection, params string[] sqls)
    {
        using (SqlConnection ConObj = new SqlConnection( strConnection))
        {
            SqlCommand CmbObj = new SqlCommand();
            CmbObj.CommandTimeout = 60;
            CmbObj.Connection = ConObj;
            ConObj.Open();
            bool isok = true;
            CmbObj.Transaction = ConObj.BeginTransaction();
            try
            {
                foreach (string sql in sqls)
                {
                    if (sql.Length == 0) { continue; }
                    //PrepareCommand(CmbObj, ConObj, CommandType.Text, sql, null);
                    if (ConObj.State != ConnectionState.Open)
                    {
                        ConObj.Open();
                    }
                    CmbObj.CommandTimeout = 1000;
                    CmbObj.CommandText = sql;
                    CmbObj.CommandType = CommandType.Text;
                    CmbObj.ExecuteNonQuery();
                    CmbObj.Parameters.Clear();
                }
                CmbObj.Transaction.Commit();
                isok = true;
            }
            catch
            {
                CmbObj.Transaction.Rollback();
                isok = false;
            }
            finally
            {
                CmbObj.Dispose();
                ConObj.Close();
            }
            return isok;
        }
    }
    /// <summary>
    /// 提交一条SQL语句的事务
    /// </summary>
    /// <param name="sqls"></param>
    /// <returns></returns>

    public static bool Transaction(ref string strSQL)
    {
        SqlConnection ConObj = new SqlConnection( Strconnection);
        SqlCommand CmbObj = new SqlCommand();
        CmbObj.CommandTimeout = 60;
        CmbObj.Connection = ConObj;
        ConObj.Open();
        bool isok = true;
        CmbObj.Transaction = ConObj.BeginTransaction();
        try
        {
            CmbObj.CommandText = strSQL;
            CmbObj.CommandType = CommandType.Text;
            CmbObj.ExecuteNonQuery();
            CmbObj.Parameters.Clear();
            CmbObj.Transaction.Commit();
            isok = true;
        }
        catch
        {
            CmbObj.Transaction.Rollback();
            isok = false;
        }
        finally
        {
            CmbObj.Dispose();
            ConObj.Close();
        }
        return isok;
    }
    /// <summary>
    /// 返回一个DataTable
    /// </summary>
    /// <param name="StrCmdText"></param>
    /// <returns></returns>
    /// 

    public static DataTable ExecuteTable(ref string StrCmdText)
    {
        SqlConnection ConObj = new SqlConnection( Strconnection);
        ConObj.Open();
        SqlCommand cmd = new SqlCommand(StrCmdText, ConObj);
        cmd.CommandTimeout = 1800;
        SqlDataAdapter sda = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        sda.Fill(dt);
        sda.Dispose();
        ConObj.Dispose();
        return dt;
    }
    /// <summary>
    /// 返回一个单元格数据
    /// </summary>
    /// <param name="StrCmdText"></param>
    /// <returns></returns>
    public static object ExecuteScalar(ref string StrCmdText)
    {
        SqlConnection ConObj = new SqlConnection( Strconnection);
        ConObj.Open();
        SqlCommand cmd = new SqlCommand(StrCmdText, ConObj);
        object o = cmd.ExecuteScalar();
        ConObj.Dispose();
        return o;
    }
    /// <summary>
    /// 返回受影响行数
    /// </summary>
    /// <param name="StrCmdText"></param>
    /// <returns></returns>
    public static int ExecuteNonQuery(ref string StrCmdText)
    {
        SqlConnection ConObj = new SqlConnection(Strconnection);
        ConObj.Open();
        SqlCommand cmd = new SqlCommand(StrCmdText, ConObj);
        int i = cmd.ExecuteNonQuery();
        ConObj.Dispose();
        return i;
    }
    /// <summary>
    /// 大批量插入数据到数据库
    /// </summary>
    /// <param name="dt"></param>
    /// <returns></returns>
    public static int SqlBulkCopy(DataTable table)
    {
        string connStr = Strconnection;
        SqlBulkCopy bulkCopy = new SqlBulkCopy(connStr, SqlBulkCopyOptions.CheckConstraints | SqlBulkCopyOptions.FireTriggers);
        bulkCopy.BulkCopyTimeout = 3600;
        bulkCopy.DestinationTableName = table.TableName;//设置数据库中对象的表名 

        string lei = "";
        //设置数据表table和数据库中表的列对应关系 
        foreach (DataColumn col in table.Columns)
        {
            bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName);
            lei += col.ColumnName+",";
        }
        //将数据集合和目标服务器库表中的字段对应 

        bulkCopy.WriteToServer(table);//将数据表table复制到数据库中
        return 1;

    }
    public static int SqlBulkCopy(DataTable table,string tablename)
    {
        string connStr = Strconnection;
        SqlBulkCopy bulkCopy = new SqlBulkCopy(connStr, SqlBulkCopyOptions.CheckConstraints | SqlBulkCopyOptions.FireTriggers);
        bulkCopy.BulkCopyTimeout = 3600;
        bulkCopy.DestinationTableName = tablename;//设置数据库中对象的表名 

        string lei = "";
        //设置数据表table和数据库中表的列对应关系 
        foreach (DataColumn col in table.Columns)
        {
            bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName);
            lei += col.ColumnName + ",";
        }
        //将数据集合和目标服务器库表中的字段对应 

        bulkCopy.WriteToServer(table);//将数据表table复制到数据库中
        return 1;

    }
}

  

原文地址:https://www.cnblogs.com/zoumin123/p/7346692.html