首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

私用的DBHelper类

2013-10-22 
自用的DBHelper类using Systemusing System.Collectionsusing System.Collections.Specializedusing Sy

自用的DBHelper类

using System;using System.Collections;using System.Collections.Specialized;using System.Data;using System.Data.SqlClient;using System.Configuration;using System.Data.Common;using System.Collections.Generic;using System.Web.UI.WebControls;using System.Security.Cryptography;using System.Text;  /// <summary>    /// 数据访问抽象基础类      /// </summary>public abstract class DbHelperSQL{    public DbHelperSQL()    {    }        //定义连接字符串。    protected static string ConnectionString =ConfigurationManager.ConnectionStrings["connstr"].ToString();    protected static SqlConnection Connection;    //定义数据库的打开和关闭方法    protected static void Open()    {        if (Connection == null)        {            Connection = new SqlConnection(ConnectionString);        }        if (Connection.State.Equals(ConnectionState.Closed))        {            Connection.Open();        }    }    protected static void Close()    {        if (Connection != null)        {            Connection.Close();        }    }        // 公有方法,执行Sql语句。对Update、Insert、Delete为影响到的行数,其他情况为-1    public static int ExecuteCommand(String SqlString)    {        int count = -1;        Open();        try        {            SqlCommand cmd = new SqlCommand(SqlString, Connection);            count = cmd.ExecuteNonQuery();        }        catch        {            count = -1;        }        finally        {            Close();        }        return count;    }    // 公有方法,执行Sql语句。对Update、Insert、Delete为影响到的行数,其他情况为-1    public static int ExecuteCommand(string strSql, params SqlParameter[] values)    {        int count = -1;        Open();        try        {            SqlCommand cmd = new SqlCommand(strSql, Connection);            cmd.Parameters.AddRange(values);            count = cmd.ExecuteNonQuery();        }        catch        {            count = -1;        }        finally        {            Close();        }        return count;    }    //绑定到GridView    public static void BindGridView(string SqlString, GridView MyGvData)    {        MyGvData.DataSource = GetDataSet(SqlString);        MyGvData.DataBind();    }    //绑定到DropDownList,设定Text和value显示    public static void BindDropDownList2(string SqlString, DropDownList MyDDL, string TextStr, string ValueStr)    {        SqlDataReader MyReader = GetDataReader(SqlString);        while (MyReader.Read())        {            ListItem MyItem = new ListItem();            MyItem.Text = MyReader[TextStr].ToString();            MyItem.Value = MyReader[ValueStr].ToString();            MyDDL.Items.Add(MyItem);        }        MyReader.Close();    }    //绑定到DropDownList,设定Text和value显示    public static void BindDropDownList(string SqlString, DropDownList MyDDL, string TextStr, string ValueStr)    {        SqlDataReader MyReader = GetDataReader(SqlString);        MyDDL.Items.Clear();        while (MyReader.Read())        {            ListItem MyItem = new ListItem();            MyItem.Text = MyReader[TextStr].ToString();            MyItem.Value = MyReader[ValueStr].ToString();            MyDDL.Items.Add(MyItem);        }        MyReader.Close();    }    //绑定到DropDownList,设定Text和value显示    public static void BindItemList(string SqlString, ListBox MyDDL, string TextStr, string ValueStr)    {        SqlDataReader MyReader = GetDataReader(SqlString);        MyDDL.Items.Clear();        while (MyReader.Read())        {            ListItem MyItem = new ListItem();            MyItem.Text = MyReader[TextStr].ToString();            MyItem.Value = MyReader[ValueStr].ToString();            MyDDL.Items.Add(MyItem);        }        MyReader.Close();    }    //绑定到DropDownList,设定Text和value显示    public static void BindDropDownListAddEmpty(string SqlString, DropDownList MyDDL, string TextStr, string ValueStr)    {        SqlDataReader MyReader = GetDataReader(SqlString);        MyDDL.Items.Clear();        ListItem MyItem1 = new ListItem();        MyItem1.Text = "";        MyItem1.Value = "0";        MyDDL.Items.Add(MyItem1);        while (MyReader.Read())        {            ListItem MyItem = new ListItem();            MyItem.Text = MyReader[TextStr].ToString();            MyItem.Value = MyReader[ValueStr].ToString();            MyDDL.Items.Add(MyItem);        }        MyReader.Close();    }    //返回一个用 | 分隔的字符串    public static string GetStringList(string SqlString)    {        string ReturnStr = string.Empty;        SqlDataReader MyReader = GetDataReader(SqlString);        while (MyReader.Read())        {            if (ReturnStr.Length > 0)            {                ReturnStr = ReturnStr + "|" + MyReader[0].ToString();            }            else            {                ReturnStr = MyReader[0].ToString();            }        }        MyReader.Close();        return ReturnStr;    }    //返回当前最大的列值    public static int GetMaxID(string FieldName, string TableName)    {        int MyReturn = 0;        SqlDataReader MyReader = GetDataReader("select max(" + FieldName + ") from " + TableName);        if (MyReader.Read())        {            MyReturn = int.Parse(MyReader[0].ToString());        }        MyReader.Close();        return MyReturn;    }    //判断用Sql查询的数据是否存在,true表示存在,False表示不存在    public static bool Exists(string strSql)    {        object obj = DbHelperSQL.GetSingle(strSql);        int cmdresult;        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))        {            cmdresult = 0;        }        else        {            cmdresult = int.Parse(obj.ToString());        }        if (cmdresult == 0)        {            return false;        }        else        {            return true;        }    }    public static bool Exists(string strSql, params SqlParameter[] cmdParms)    {        object obj = DbHelperSQL.GetSingle(strSql, cmdParms);        int cmdresult;        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))        {            cmdresult = 0;        }        else        {            cmdresult = int.Parse(obj.ToString());        }        if (cmdresult == 0)        {            return false;        }        else        {            return true;        }    }    //返回SqlDataReader数据集,使用完后记得关闭SqlDataReader    public static SqlDataReader GetDataReader(string SqlString)    {        try        {            Open();            SqlCommand cmd = new SqlCommand(SqlString, Connection);            return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);        }        catch (System.Data.SqlClient.SqlException ex)        {            throw new Exception(ex.Message);        }    }    // 公有方法,获取数据,返回一个DataSet。        public static DataSet GetDataSet(string SqlString)    {        using (SqlConnection connection = new SqlConnection(ConnectionString))        {            connection.Open();            using (SqlCommand cmd = new SqlCommand(SqlString, connection))            {                using (SqlDataAdapter da = new SqlDataAdapter(cmd))                {                    DataSet ds = new DataSet();                    try                    {                        da.Fill(ds, "ds");                        cmd.Parameters.Clear();                    }                    catch (System.Data.SqlClient.SqlException ex)                    {                        throw new Exception(ex.Message);                    }                    return ds;                }            }        }    }    // 公有方法,获取数据,返回一个DataTable。        public static DataTable GetDataTable(string SqlString)    {        DataSet dataset = GetDataSet(SqlString);        return dataset.Tables[0];    }    // 公有方法,获取数据,返回首行首列。        public static string GetSHSL(string SqlString)    {        DataSet dataset = GetDataSet(SqlString);        if (dataset.Tables[0].Rows.Count > 0)        {            return Convert.ToString(dataset.Tables[0].Rows[0][0].ToString());        }        else        {            return "";        }    }    // 公有方法,获取数据,返回首行首列的INT值。        public static string GetSHSLInt(string SqlString)    {        DataSet dataset = GetDataSet(SqlString);        if (dataset.Tables[0].Rows.Count > 0)        {            return Convert.ToString(dataset.Tables[0].Rows[0][0].ToString());        }        else        {            return "0";        }    }    // 公有方法,获取数据,返回一个DataRow。    public static DataRow GetDataRow(string SqlString)    {        DataSet dataset = GetDataSet(SqlString);        if (dataset.Tables[0].Rows.Count > 0)        {            return dataset.Tables[0].Rows[0];        }        else        {            return null;        }    }    // 公有方法,执行Sql语句。对Update、Insert、Delete为影响到的行数,其他情况为-1    public static int ExecuteSQL(String SqlString, Hashtable MyHashTb)    {        int count = -1;        Open();        try        {            SqlCommand cmd = new SqlCommand(SqlString, Connection);            foreach (DictionaryEntry item in MyHashTb)            {                string[] CanShu = item.Key.ToString().Split('|');                if (CanShu[1].ToString().Trim() == "string")                {                    cmd.Parameters.Add(CanShu[0], SqlDbType.VarChar);                }                else if (CanShu[1].ToString().Trim() == "int")                {                    cmd.Parameters.Add(CanShu[0], SqlDbType.Int);                }                else if (CanShu[1].ToString().Trim() == "text")                {                    cmd.Parameters.Add(CanShu[0], SqlDbType.Text);                }                else if (CanShu[1].ToString().Trim() == "datetime")                {                    cmd.Parameters.Add(CanShu[0], SqlDbType.DateTime);                }                else                {                    cmd.Parameters.Add(CanShu[0], SqlDbType.VarChar);                }                cmd.Parameters[CanShu[0]].Value = item.Value.ToString();            }            count = cmd.ExecuteNonQuery();        }        catch        {            count = -1;        }        finally        {            Close();        }        return count;    }    // 公有方法,执行Sql语句。对Update、Insert、Delete为影响到的行数,其他情况为-1    public static int ExecuteSQL(String SqlString)    {        int count = -1;        Open();        try        {            SqlCommand cmd = new SqlCommand(SqlString, Connection);            count = cmd.ExecuteNonQuery();        }        catch        {            count = -1;        }        finally        {            Close();        }        return count;    }    // 公有方法,执行一组Sql语句。返回是否成功,采用事务管理,发现异常时回滚数据    public static bool ExecuteSQL(string[] SqlStrings)    {        bool success = true;        Open();        SqlCommand cmd = new SqlCommand();        SqlTransaction trans = Connection.BeginTransaction();        cmd.Connection = Connection;        cmd.Transaction = trans;        try        {            foreach (string str in SqlStrings)            {                cmd.CommandText = str;                cmd.ExecuteNonQuery();            }            trans.Commit();        }        catch        {            success = false;            trans.Rollback();        }        finally        {            Close();        }        return success;    }    // 执行一条计算查询结果语句,返回查询结果(object)。            public static object GetSingle(string SQLString)    {        using (SqlConnection connection = new SqlConnection(ConnectionString))        {            using (SqlCommand cmd = new SqlCommand(SQLString, connection))            {                try                {                    connection.Open();                    object obj = cmd.ExecuteScalar();                    if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))                    {                        return null;                    }                    else                    {                        return obj;                    }                }                catch (System.Data.SqlClient.SqlException e)                {                    connection.Close();                    throw e;                }            }        }    }    public static object GetSingle(string SQLString, int Times)    {        using (SqlConnection connection = new SqlConnection(ConnectionString))        {            using (SqlCommand cmd = new SqlCommand(SQLString, connection))            {                try                {                    connection.Open();                    cmd.CommandTimeout = Times;                    object obj = cmd.ExecuteScalar();                    if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))                    {                        return null;                    }                    else                    {                        return obj;                    }                }                catch (System.Data.SqlClient.SqlException e)                {                    connection.Close();                    throw e;                }            }        }    }    public static object GetSingle(string SQLString, params SqlParameter[] cmdParms)    {        using (SqlConnection connection = new SqlConnection(ConnectionString))        {            using (SqlCommand cmd = new SqlCommand())            {                try                {                    PrepareCommand(cmd, connection, null, SQLString, cmdParms);                    object obj = cmd.ExecuteScalar();                    cmd.Parameters.Clear();                    if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))                    {                        return null;                    }                    else                    {                        return obj;                    }                }                catch (System.Data.SqlClient.SqlException e)                {                    throw e;                }            }        }    }    // 执行SQL语句,返回影响的记录数    public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)    {        using (SqlConnection connection = new SqlConnection(ConnectionString))        {            using (SqlCommand cmd = new SqlCommand())            {                try                {                    PrepareCommand(cmd, connection, null, SQLString, cmdParms);                    int rows = cmd.ExecuteNonQuery();                    cmd.Parameters.Clear();                    return rows;                }                catch (System.Data.SqlClient.SqlException e)                {                    throw e;                }            }        }    }    //执行查询语句,返回DataSet    public static DataSet Query(string SQLString, params SqlParameter[] cmdParms)    {        using (SqlConnection connection = new SqlConnection(ConnectionString))        {            SqlCommand cmd = new SqlCommand();            PrepareCommand(cmd, connection, null, SQLString, cmdParms);            using (SqlDataAdapter da = new SqlDataAdapter(cmd))            {                DataSet ds = new DataSet();                try                {                    da.Fill(ds, "ds");                    cmd.Parameters.Clear();                }                catch (System.Data.SqlClient.SqlException ex)                {                    throw new Exception(ex.Message);                }                return ds;            }        }    }    private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)    {        if (conn.State != ConnectionState.Open)            conn.Open();        cmd.Connection = conn;        cmd.CommandText = cmdText;        if (trans != null)            cmd.Transaction = trans;        cmd.CommandType = CommandType.Text;//cmdType;        if (cmdParms != null)        {            foreach (SqlParameter parameter in cmdParms)            {                if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&                    (parameter.Value == null))                {                    parameter.Value = DBNull.Value;                }                cmd.Parameters.Add(parameter);            }        }    }}


热点排行