ASP.NETのSQLhelperのベスト書き方

6707 ワード

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;


namespace Common
{
    public sealed class SQLHelper
    {
        //        
        private readonly static string ConnStr = ConfigurationManager.ConnectionStrings["connString"].ConnectionString;
        
        /// <summary>
        ///         
        /// </summary> 
        public static int ExecNonquery(string sql,SqlParameter[] parameter) 
        {
            try
            {
                using (SqlConnection conn = new SqlConnection(ConnStr))
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = sql;
                        if (parameter != null)
                        {
                            cmd.Parameters.AddRange(parameter);
                        }
                        return cmd.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception e)
            {
                RecordLog.Record(e.Message, e.StackTrace.ToString());
                return -1;
            }
        }


        /// <summary>
        ///       
        /// </summary> 
        public static object ExecScalar(string sql, SqlParameter[] parameter)
        {
            try
            {
                using (SqlConnection conn = new SqlConnection(ConnStr))
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = sql;
                        if (parameter != null)
                        {
                            cmd.Parameters.AddRange(parameter);
                        }
                        return cmd.ExecuteScalar();
                    }
                }
            }
            catch (Exception e)
            {
                RecordLog.Record(e.Message, e.StackTrace.ToString());
                return null;
            }
        }


        /// <summary>
        ///      
        /// </summary> 
        public static DataSet ExecDataSet(string sql, SqlParameter[] parameter)
        {
            try
            {
                using (SqlConnection conn = new SqlConnection(ConnStr))
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = sql;
                        if (parameter != null)
                        {
                            cmd.Parameters.AddRange(parameter);
                        }
                        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                        DataSet ds = new DataSet();
                        adapter.Fill(ds);
                        return ds;
                    }
                }
            }
            catch (Exception e)
            {
                RecordLog.Record(e.Message, e.StackTrace.ToString());
                return null;
            }
        }


        /// <summary>
        ///      
        /// </summary> 
        public static DataTable ExecDataTable(string sql, SqlParameter[] parameter)
        {
            try
            {
                using (SqlConnection conn = new SqlConnection(ConnStr))
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = sql;
                        if (parameter != null)
                        {
                            cmd.Parameters.AddRange(parameter);
                        }
                        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                        DataSet ds = new DataSet();
                        adapter.Fill(ds);
                        return ds.Tables[0];
                    }
                }
            }
            catch (Exception e)
            {
                RecordLog.Record(e.Message, e.StackTrace.ToString());
                return null;
            }
        }


        /// <summary>
        ///       
        /// </summary>
        /// <param name="TableName">  </param>
        /// <param name="FieldName">   </param>
        /// <param name="wheres">where  </param>
        /// <param name="order">   desc or asc</param>
        /// <param name="PageSize">    </param>
        /// <param name="PageIndex">    </param>
        /// <param name="TotalCount">   </param>
        /// <param name="PageIdORField">       </param>
        /// <param name="OrderField">       </param>
        public static DataSet LinkProce(string TableName, string FieldName, string wheres, string order, string PageIdORField, string OrderField, ref int PageSize, ref int PageIndex)
        {
            using (SqlConnection conn = new SqlConnection(ConnStr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "sp_PagingTabs";
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@TableName", TableName);
                    cmd.Parameters.AddWithValue("@FieldName", FieldName);
                    cmd.Parameters.AddWithValue("@where", wheres);
                    cmd.Parameters.AddWithValue("@Order", order);
                    cmd.Parameters.AddWithValue("@OrderField", OrderField);
                    cmd.Parameters.AddWithValue("@PageIdORField", PageIdORField);
                    cmd.Parameters.AddWithValue("@PageSize", PageSize);
                    cmd.Parameters.AddWithValue("@PageIndex", PageIndex);


                    SqlDataAdapter da = new SqlDataAdapter();
                    da.SelectCommand = cmd;
                    DataSet ds = new DataSet();
                    try
                    {
                        da.Fill(ds);
                        return ds;
                    }
                    catch
                    {
                        return null;
                    }
                    finally
                    {
                        ds.Dispose();
                        conn.Close();
                    }
                }
            }
        }
    }
}