声明,我是小白,大家莫笑,写了一个用来控制数据库连接的基类,求改进。
总觉得connection这部分控制的不好,常常看别人写这类代码用连接池,或单例模式之类的,不是很懂,现在这段代码是能跑起来,但是仍然感觉缺点很多,求各位大侠改进,谢谢!
public class BaseAccess
    {
        private static SqlConnection con = null;
        private static SqlCommand cmd = null;        public int ExecuteNonQuery(string sql, Dictionary<string, object> Parameters)
        {
            int result = 0;
            try
            {
                con = connection.sqlconnection;
                con.Open();
                cmd = con.CreateCommand();
                cmd.CommandText = sql;
                cmd = AddParameters(cmd, Parameters);
                result = cmd.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                con.Close();
            }
            return result;
        }        public int ExecuteNonQuery(string sql)
        {
            return ExecuteNonQuery(sql, null);
        }        public DataSet ExecuteDataSet(string sql, Dictionary<string, object> Parameters)
        {
            DataSet ds = new DataSet();
            try
            {
                con = connection.sqlconnection;
                con.Open();
                cmd = con.CreateCommand();
                cmd.CommandText = sql;
                cmd = AddParameters(cmd, Parameters);
                SqlDataAdapter adapt = new SqlDataAdapter(cmd);                adapt.Fill(ds);            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                con.Close();
            }
            return ds;
        }        public DataSet ExecuteDataSet(string sql)
        {
            return ExecuteDataSet(sql, null);
        }        public DataTable ExecuteDataTable(string sql, Dictionary<string, object> Parameters)
        {
            DataSet ds = ExecuteDataSet(sql, Parameters);
            return ds.Tables[0];
        }        public DataTable ExecuteDataTable(string sql)
        {
            return ExecuteDataTable(sql, null);
        }        public object ExecuteScalar(string sql, Dictionary<string, object> Parameters)
        {
            object result = null;
            try
            {
                con = connection.sqlconnection;
                con.Open();
                cmd = con.CreateCommand();
                cmd.CommandText = sql;
                cmd=AddParameters(cmd, Parameters);
                result = cmd.ExecuteScalar();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                con.Close();
            }
            return result;
        }        #region private function
        private SqlCommand AddParameters(SqlCommand cmd, Dictionary<string, object> sqlParameters)
        {
            try
            {
                if (sqlParameters != null)
                {
                    foreach (var item in sqlParameters)
                    {
                        cmd.Parameters.AddWithValue(item.Key, item.Value);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
           
            return cmd;
        }
        #endregion