zoukankan      html  css  js  c++  java
  • DbHelper.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Configuration;
    using System.Data.SqlClient;
    using System.Data;
    using System.Collections;
    namespace XXX
    {
        public class DbHelper
        {
            private readonly string connString = ConfigurationManager.ConnectionStrings["sqlConnection"].ConnectionString;
            private static DbHelper dbhelper;
            private DbHelper() { }
    
            public static DbHelper Instance()
            {
                if (dbhelper == null)
                    return dbhelper = new DbHelper();
                return dbhelper;
            }
    
            /// <summary>
            /// 返回connection对象 
            /// </summary>
            /// <returns></returns>
            public SqlConnection ReturnConn()
            {
                SqlConnection Conn = new SqlConnection(connString);
                Conn.Open();
                return Conn;
            }
            /// <summary>
            /// 断开connection
            /// </summary>
            /// <param name="Conn"></param>
            public void Dispose(SqlConnection Conn)
            {
                if (Conn != null)
                {
                    Conn.Close();
                    Conn.Dispose();
                }
                GC.Collect();
            }
    
            /// <summary>
            /// 运行SQL语句,返回受影响行数
            /// </summary>
            /// <param name="SQL"></param>
            public int ExecSql(string SQL)
            {
                SqlConnection Conn;
                Conn = ReturnConn();
                SqlCommand Cmd;
                Cmd = CreateCmd(SQL, Conn);
                int rows = 0;
                try
                {
                    rows = Cmd.ExecuteNonQuery();
                }
                catch
                {
                    throw new Exception(SQL);
                }
                Dispose(Conn);
                return rows;
            }
    
            /// <summary>
            /// 运行SQL语句返回DataReader
            /// </summary>
            /// <param name="SQL"></param>
            /// <returns>SqlDataReader对象.</returns>
            public SqlDataReader ExecSqlGetReader(string SQL)
            {
                SqlConnection Conn = ReturnConn();
                SqlCommand Cmd;
                Cmd = CreateCmd(SQL, Conn);
                SqlDataReader Dr;
                try
                {
                    Dr = Cmd.ExecuteReader(CommandBehavior.Default);
                }
                catch
                {
                    throw new Exception(SQL);
                }
                return Dr;
            }
    
    
            /// <summary>
            /// 运行SQL语句,返回DataSet对象
            /// </summary>
            /// <param name="procName">SQL语句</param>
            /// <param name="prams">DataSet对象</param>
            public DataSet ExecSqlGetDs(string SQL)
            {
                return ExecSql(SQL,null);
            }
    
            /// <summary>
            /// 检验是否存在数据
            /// </summary>
            /// <returns></returns>
            public bool ExistDate(string SQL)
            {
                SqlConnection Conn = ReturnConn();
                SqlDataReader Dr;
                Dr = CreateCmd(SQL, Conn).ExecuteReader();
                if (Dr.Read())
                {
                    Dispose(Conn);
                    return true;
                }
                else
                {
                    Dispose(Conn);
                    return false;
                }
            }
    
            /// <summary>
            /// 执行多条SQL语句,实现数据库事务。
            /// </summary>
            /// <param name="SQLStringList">多条SQL语句</param>
            public void ExecSqlTran(ArrayList SQLStringList)
            {
                using (SqlConnection conn = ReturnConn())
                {
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conn;
                    SqlTransaction tx = conn.BeginTransaction();
                    cmd.Transaction = tx;
                    try
                    {
                        for (int n = 0; n < SQLStringList.Count; n++)
                        {
                            string strsql = SQLStringList[n].ToString();
                            if (strsql.Trim().Length > 1)
                            {
                                cmd.CommandText = strsql;
                                cmd.ExecuteNonQuery();
                            }
                        }
                        tx.Commit();
                    }
                    catch (System.Data.SqlClient.SqlException E)
                    {
                        tx.Rollback();
                        throw new Exception(E.Message);
                    }
                }
            }
    
    
            /// <summary>
            /// 返回SQL语句执行结果的第一行第一列
            /// </summary>
            /// <returns>object对象</returns>
            public object ReturnValue(string SQL)
            {
                return ReturnValue(SQL,0);
            }
    
            /// <summary>
            /// 返回SQL语句第一行,第ColumnI列 从0开始
            /// </summary>
            /// <returns>字符串</returns>
            public object ReturnValue(string SQL, int ColumnI)
            {
                object result = null;
                try
                {
                    SqlDataReader Dr = ExecSqlGetReader(SQL);
                    if (Dr.Read())
                    {
                        result = Dr[ColumnI];
                    }
                }
                catch
                {
                    throw new Exception(SQL);
                }
                
                return result;
            }
    
            /// <summary>
            /// 执行查询语句,返回DataSet
            /// </summary>
            /// <param name="SQLString">查询语句</param>
            /// <param name="cmdParms">SQL语句用到的参数数组或null</param>
            /// <returns>DataSet</returns>
            public DataSet ExecSql(string SQLString, params SqlParameter[] cmdParms)
            {
                using (SqlConnection connection = ReturnConn())
                {
                    SqlCommand cmd = CreateCmd(SQLString, cmdParms, CommandType.Text);
                    
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    {
                        DataSet ds = new DataSet();
                        try
                        {
                            da.Fill(ds);
                            cmd.Parameters.Clear();
                        }
                        catch (System.Data.SqlClient.SqlException ex)
                        {
                            throw new Exception(ex.Message);
                        }
                        return ds;
                    }
                }
            }
    
           
    
            /// <summary>
            /// 运行存储过程,返回dataset
            /// </summary>
            /// <param name="procName">存储过程名.</param>
            /// <param name="prams">存储过程入参数组.</param>
            /// <returns>dataset对象.</returns>
            public DataSet ExecProc(string procName, SqlParameter[] prams)
            {
                SqlCommand Cmd = CreateCmd(procName, prams,CommandType.StoredProcedure);
                DataSet Ds = new DataSet();
                SqlDataAdapter Da = new SqlDataAdapter(Cmd);
                try
                {
                    Da.Fill(Ds);
                }
                catch (Exception Ex)
                {
                    throw Ex;
                }
                return Ds;
            }
    
    
            /// <summary>
            /// 生成一个存储过程使用的sqlcommand.
            /// </summary>
            /// <param name="procName">存储过程名.</param>
            /// <param name="prams">存储过程入参数组.</param>
            /// <param name="type">sql的类型</param>
            /// <returns>sqlcommand对象.</returns>
            public SqlCommand CreateCmd(string Sql, SqlParameter[] prams,CommandType type)
            {
                SqlConnection Conn;
                Conn = ReturnConn();
                SqlCommand Cmd = new SqlCommand(Sql, Conn);
                Cmd.CommandType = type;
                if (prams != null)
                {
                    foreach (SqlParameter parameter in prams)
                    {
                        if (parameter != null)
                        {
                            Cmd.Parameters.Add(parameter);
                        }
                    }
                }
                return Cmd;
            }
    
            /// <summary>
            /// 生成Command对象
            /// </summary>
            /// <param name="SQL"></param>
            /// <param name="Conn"></param>
            /// <returns></returns>
            public SqlCommand CreateCmd(string SQL, SqlConnection Conn)
            {
                SqlCommand Cmd;
                Cmd = new SqlCommand(SQL, Conn);
                return Cmd;
            }
        }
    }

    未完全测试,持续更新中...

  • 相关阅读:
    PB中的Grid视图
    MVC加jquery的无刷新列表分页摘要
    Quartz.Net 1.30的一些设置说明
    将Excel的数据库字典导到PDM中
    HubbleDotNet使用备忘
    EntLib5.0 日志应用程序块(logging) 使用与配置
    生成随机密码
    网站整合QQ登录
    PB代码参考段
    SQL查询之 Pivot 详解
  • 原文地址:https://www.cnblogs.com/mengxingxinqing/p/3118501.html
Copyright © 2011-2022 走看看