SQLHelp

来源:互联网 发布:施工进度网络图软件 编辑:程序博客网 时间:2024/04/30 08:35
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace CMS.SQLHelper
{
    /// <summary>
    /// CsDBOPT 。
    /// </summary>
    public class CsDBOPT
    {
        public CsDBOPT()
        {
            //
            // TODO:
            //
        }

        //
        private SqlConnection myConnection;
        private readonly string RETURNVALUE = "RETURNVALUE";

        /// <summary>
        /// .
        /// </summary>
        private void Open()
        {
            //
            if (myConnection == null)
            {
                myConnection = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());                
            }                
            if(myConnection.State == ConnectionState.Closed)
            {   
                try
                {
                    ///
                    myConnection.Open();
                }
                catch(Exception ex)
                {
                    CsError.SystemLog(ex.Message);
                }
                finally
                {
                    ///                
                }
            }
        }

        /// <summary>
        ///
        /// </summary>
        public void Close()
        {
            ///
            if(myConnection != null)
            {
                ///
                if(myConnection.State == ConnectionState.Open)
                {
                    myConnection.Close();
                }
            }
        }

        /// <summary>
        ///
        /// </summary>
        public void Dispose()
        {
            //
            if (myConnection != null)
            {
                myConnection.Dispose();
                myConnection = null;
            }                
        }


        /// <summary>
        ///
        /// </summary>
        /// <param name="procName"></param>
        /// <returns></returns>
        public void RunProc_NonQuery(string procName, SqlParameter[] prams)
        {
            SqlCommand cmd = CreateCommand(procName, prams);
            try
            {
                ///
                cmd.ExecuteNonQuery();
            }
            catch(Exception ex)
            {
                ///
                CsError.SystemLog(ex.Message);
            }
            ///
            Close();            
        }



        /// <summary>
        ///
        /// </summary>
        /// <param name="procName"></param>
        /// <param name="prams"></param>
        /// <returns></returns>
        public string RunProc_NonQuery(string procName, SqlParameter[] prams, string rtParaName)
        {
            SqlCommand cmd = CreateCommand(procName, prams);
            try
            {
                ///
                cmd.ExecuteNonQuery();
            }
            catch(Exception ex)
            {
                ///
                CsError.SystemLog(ex.Message);
            }
            ///
            Close();
            
            ///
            return cmd.Parameters[rtParaName].Value.ToString();
        }


        /// <summary>
        ///
        /// </summary>
        /// <param name="procName"></param>
        /// <param name="prams"></param>
        /// <param name="dataReader"></param>
        public void RunProc_Reader(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
        {
            ///Command
            SqlCommand cmd = CreateCommand(procName, prams);
            
            ///
            dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }        


        /// <summary>
        ///
        /// </summary>
        /// <param name="procName"></param>
        /// <param name="prams"></param>
        /// <returns>datatable</returns>
        public void RunProc_Adapter(string procName, SqlParameter[] prams,out DataTable datatable)
        {
            DataTable dt = new DataTable();
            SqlCommand cmd = CreateCommand(procName, prams);
            try
            {
                SqlDataAdapter adp = new SqlDataAdapter(cmd);
                adp.Fill(dt);
            }
            catch(Exception ex)
            {
                ///
                CsError.SystemLog(ex.Message);
            }
            ///
            Close();

            datatable = dt;
        }



        /// <summary>
        /// SQL,
        /// </summary>
        /// <param name="sql"></param>
        public void RunSQL_NonQuery(string sql)
        {
            //SqlCommand
            SqlCommand cmd = CreateCommand(sql);

            cmd.ExecuteNonQuery();

            ///
            Close();
        }
        

        /// <summary>
        /// SQL
        /// </summary>
        /// <param name="sql">sql</param>
        /// <param name="dt">DataTable</param>
        public void RunSQL_Reader(string sql,out SqlDataReader dataReader)
        {
            //SqlCommand
            SqlCommand cmd = CreateCommand(sql);

            dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }    


        /// <summary>
        /// SQL
        /// </summary>
        /// <param name="sql"></param>
        /// <returns>datatable</returns>
        public void RunSQL_Adapter(string sql, out DataTable datatable)
        {
            DataTable dt = new DataTable();
            //SqlCommand
            SqlCommand cmd = CreateCommand(sql);
            try
            {
                SqlDataAdapter adp = new SqlDataAdapter(cmd);
                adp.Fill(dt);
            }
            catch(Exception ex)
            {
                ///
                CsError.SystemLog(ex.Message);
            }
            ///
            Close();

            datatable = dt;
        }
            


        /// <summary>
        /// SqlCommand
        /// </summary>
        /// <param name="procName"></param>
        /// <param name="prams"></param>
        /// <returns>SqlCommand</returns>
        private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
        {
            ///
            Open();
            
            ///Command
            SqlCommand cmd = new SqlCommand(procName, myConnection);
            cmd.CommandType = CommandType.StoredProcedure;

            ///
            if (prams != null)
            {
                foreach (SqlParameter parameter in prams)
                {
                    cmd.Parameters.Add(parameter);
                }
            }
            
            ///ReturnValue
            cmd.Parameters.Add(
                new SqlParameter(RETURNVALUE, SqlDbType.Int,4,ParameterDirection.ReturnValue,
                false,0,0,string.Empty, DataRowVersion.Default,null));

            ///SqlCommand
            return cmd;
        }

        
        /// <summary>
        /// SqlCommandSQL
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        private SqlCommand CreateCommand(string sql)
        {
            //
            Open();

            //Command
            SqlCommand cmd = new SqlCommand(sql,myConnection);
            cmd.CommandType = CommandType.Text;

            return cmd;
        }


        /// <summary>
        ///
        /// </summary>
        /// <param name="ParamName"></param>
        /// <param name="DbType"></param>
        /// <param name="Size"></param>
        /// <param name="Direction"></param>
        /// <param name="Value"></param>
        /// <returns> parameter </returns>
        public SqlParameter CreateParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
        {
            SqlParameter param;

            ///0,
            if(Size > 0)
            {
                param = new SqlParameter(ParamName, DbType, Size);
            }
            else
            {
                ///0,
                param = new SqlParameter(ParamName, DbType);
            }

            ///
            param.Direction = Direction;
            if (!(Direction == ParameterDirection.Output && Value == null))
            {
                param.Value = Value;
            }

            ///
            return param;
        }

        /// <summary>
        ///
        /// </summary>
        /// <param name="ParamName"></param>
        /// <param name="DbType"></param></param>
        /// <param name="Size"></param>
        /// <param name="Value"></param>
        /// <returns>parameter </returns>
        public SqlParameter CreateInParam(string ParamName, SqlDbType DbType, int Size, object Value)
        {
            ///
            return CreateParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
        }        

        /// <summary>
        ///
        /// </summary>
        /// <param name="ParamName"></param>
        /// <param name="DbType"></param>
        /// <param name="Size"></param>
        /// <returns> parameter </returns>
        public SqlParameter CreateOutParam(string ParamName, SqlDbType DbType, int Size)
        {
            ///
            return CreateParam(ParamName, DbType, Size, ParameterDirection.Output, null);
        }        

        /// <summary>
        ///
        /// </summary>
        /// <param name="ParamName"></param>
        /// <param name="DbType"></param>
        /// <param name="Size"></param>
        /// <returns> parameter </returns>
        public SqlParameter CreateReturnParam(string ParamName, SqlDbType DbType, int Size)
        {
            ///
            return CreateParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
        }            
    }
}

原创粉丝点击