⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbhelper.cs

📁 这个是模仿PetShop写的功能强大的SQLHelper
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;


namespace OA.DBUtility
{
    /// <summary>
    /// 访问数据库的操作类,封装了所有CRUD方法
    /// 此类为抽象类,不允许实例化,在应用时直接调用即可
    /// 作者:杜帅华
    /// 日期:2009年4月3日
    /// </summary>
    public abstract class DBHelper
    {
        //连接字符串,从配置文件里面加载
        public static readonly string OAConnectionString = ConfigurationManager.ConnectionStrings["SQLConnectionString"].ConnectionString;

        #region CRUD操作方法

        /// <summary>
        /// 从数据库中读取的方法
        /// </summary>
        /// <param name="connectionString">连接字符串</param>
        /// <param name="cmdText">SQL命令</param>
        /// <param name="cmdType">命令类型</param>
        /// <param name="cmdParams">SQL命令参数</param>
        /// <returns>SqlDataReader对象</returns>
        public static SqlDataReader ExecuteReader(string connectionString, string cmdText, CommandType cmdType, params SqlParameter[] cmdParams)
        {
            SqlCommand cmd = new SqlCommand();
            SqlConnection connection = new SqlConnection(connectionString);

            // 在这里使用try/catch处理是因为如果方法出现异常,则SqlDataReader就不存在
            //CommandBehavior.CloseConnection的语句就不会执行,触发的异常由catch捕获。 
            //关闭数据库连接,并通过throw再次引发捕捉到的异常。
            try
            {
                PreparedCommand(cmd, connection, null, cmdType, cmdText, cmdParams);
                SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                cmd.Parameters.Clear();
                return reader;
            }
            catch (Exception e)
            {
                connection.Close();
                throw;
            }
        }
        /// <summary>
        /// 获取唯一结果集的方法
        /// </summary>
        /// <param name="cmdText">SQL命令</param>
        /// <param name="cmdType">命令类型</param>
        /// <param name="cmdParams">SQL命令参数</param>
        /// <returns>唯一结果集(第一行第一列)</returns>
        public static Object ExecuteScalar(string connectionString, string cmdText, CommandType cmdType, params SqlParameter[] cmdParams)
        {
            SqlCommand cmd = new SqlCommand();
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                PreparedCommand(cmd, connection, null, cmdType, cmdText, cmdParams);
                Object value = cmd.ExecuteScalar();
                cmd.Parameters.Clear();
                return value;
            }
        }
        /// <summary>
        /// 执行更新的方法(增加,删除,修改)
        /// </summary>
        /// <param name="connectionString">连接字符串</param>
        /// <param name="cmdText">SQL命令</param>
        /// <param name="cmdType">命令类型</param>
        /// <param name="cmdParams">SQL命令参数</param>
        /// <returns>所影响的行数</returns>
        public static int ExecuteNonQuery(string connectionString, string cmdText, CommandType cmdType, params SqlParameter[] cmdParams)
        {
            SqlCommand cmd = new SqlCommand();
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                PreparedCommand(cmd, connection, null, cmdType, cmdText, cmdParams);
                int value = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                return value;
            }
        }
        /// <summary>
        /// 带事务的执行更新的方法(增加,删除,修改)
        /// </summary>
        /// <param name="connectionString">连接字符串</param>
        /// <param name="trans">事务</param>
        /// <param name="cmdText">SQL命令</param>
        /// <param name="cmdType">命令类型</param>
        /// <param name="cmdParams">SQL命令参数</param>
        /// <returns>所影响的行数</returns>
        public static int ExecuteNonQuery(string connectionString, SqlTransaction trans, string cmdText, CommandType cmdType, params SqlParameter[] cmdParams)
        {
            SqlCommand cmd = new SqlCommand();
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                PreparedCommand(cmd, connection, trans, cmdType, cmdText, cmdParams); int value = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                return value;
            }
        }

        #endregion

        #region 私有方法
        /// <summary>
        /// 设置命令属性的方法
        /// </summary>
        /// <param name="connection">数据库连接对象</param>
        /// <param name="cmd">SQL命令对象</param>
        /// <param name="cmdText">SQL语句</param>
        /// <param name="trans">事务</param>
        /// <param name="cmdType">命令类型</param>
        /// <param name="cmdParams">命令参数</param>
        private static void PreparedCommand(SqlCommand cmd, SqlConnection connection, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParams)
        {
            if (connection.State != ConnectionState.Open)
            {
                connection.Open();
            }
            cmd.Connection = connection;
            cmd.CommandText = cmdText;

            if (trans != null)
            {
                cmd.Transaction = trans;
            }
            cmd.CommandType = cmdType;

            if (cmdParams != null)
            {
                foreach (SqlParameter param in cmdParams)
                {
                    cmd.Parameters.Add(param);
                }
            }
        }
        #endregion
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -