[ASP.NET 개발] ASP.SQLServer에 대한 NET의 일반 데이터베이스 액세스 클래스 분류:...

뭐랄까, 프로그래머로서 우리는 내일 모두 새로운 지식을 배워야 한다.
이전에 나는 데이터베이스를 조작할 때 모두 같은 페이지에서 데이터베이스를 조작했다.이렇게 하면 조작이 번거롭고 데이터베이스에 대한 조작 코드를 반복해서 써야 하기 때문에 많은 시간을 낭비할 뿐만 아니라 코드도 매우 어지러워 보인다.삼층 구조를 접한 사상에서 분층의 장점과 대상을 향한 장점을 깨달았다.오늘 책을 읽을 때 주금교 선생님의 데이터베이스에 대한 통용 클래스를 보고 코드를 또렷하고 실용적으로 모방하여 데이터베이스에 대한 모든 상용 조작을 포함했습니다.
/// 
    ///         
    /// 
    public class SqlHelper
    {
        private string connectionString;

        /// 
        ///           
        /// 
        public string ConnectionString
        {
            
            set { connectionString = value; }
        }

        /// 
        ///     
        /// 
        ///         
        public SqlHelper(string connectionString)
        {
            this.connectionString = connectionString;
        }

        /// 
        ///       ,       
        /// 
        ///     sql  
        ///            ,       sql    
        ///        
        public DataTable ExecuteDataTable(string sql,CommandType commandType)
        {
            return ExecuteDataTable(sql, commandType, null);
        }

        /// 
        ///       ,      
        /// 
        ///     sql    
        ///         
        public DataTable ExecuteDataTable(string sql)
        {
            return ExecuteDataTable(sql, CommandType.Text, null);
        }


        /// 
        ///       ,       
        /// 
        ///     sql  
        ///           ,       sql    
        /// Transact-SQL            
        /// 
        public DataTable ExecuteDataTable(string sql, CommandType commandtype, SqlParameter[] parameters)
        {
            DataTable data = new DataTable(); //   datatable,         
            using (SqlConnection con = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    cmd.CommandType = commandtype;//  command commandType    Commandtype
                    //         ,       
                    if (parameters != null)
                    {
                        foreach (SqlParameter parameter in parameters)
                        {
                            cmd.Parameters.Add(parameter);
                        }
                    }

                    //      sql sqlcommand      sqldataadapter
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    adapter.Fill(data);//  datatable

                }
            }
            return data;
        }

        /// 
        ///     SqlDataReader     
        /// 
        ///     SQl    
        /// 
        public SqlDataReader ExecuteReader(string sql)
        {
            return ExecuteReader(sql, CommandType.Text, null);
        }

        /// 
        /// 
        /// 
        ///     sql  
        ///           ,       SQl    
        /// 
        public SqlDataReader ExecuteReader(string sql,CommandType commandType)
        {
            return ExecuteReader(sql, commandType, null);
        }

        /// 
        ///     sqldatareader     
        /// 
        /// 
        /// 
        /// 
        /// 
        public SqlDataReader ExecuteReader(string sql, CommandType commandType, SqlParameter[] parameters)
        {
            SqlConnection con = new SqlConnection(connectionString);
            SqlCommand cmd = new SqlCommand(sql, con);

            if (parameters != null)
            {
                foreach (SqlParameter parameter in parameters)
                {
                    cmd.Parameters.Add(parameters);
                }
            }
            con.Open();
            //CommandBehavior.CloseConnection      reader          Connection  
            return cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }

        /// 
        ///       ,          。     ,   
        /// 
        ///     SQl  
        /// 
        public Object ExecuteScalar(string sql)
        {
            return ExecuteScalar(sql, CommandType.Text, null);
        }

        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        public Object ExecuteScalar(string sql, CommandType commandType)
        {
            return ExecuteScalar(sql, commandType, null);
        }


        /// 
        /// 
        /// 
        /// 
        ///     
        /// 
        /// 
        public Object ExecuteScalar(string sql,CommandType commandType, SqlParameter[] parameters)
        {
            Object result=null;
            SqlConnection con=new SqlConnection(connectionString);
            SqlCommand cmd=new SqlCommand(sql,con);
            cmd.CommandType= commandType;
            if(parameters!=null)
            {
                foreach (SqlParameter parapmeter in parameters)
                {
                    cmd.Parameters.Add(parapmeter);
                }
            }

            con.Open();
            result=cmd.ExecuteScalar();
            con.Close();
            return result;
        }

        /// 
        ///             
        /// 
        ///     sql  
        /// 
        public int ExecuteNonQuery(string sql)
        {
            return ExecuteNonQuery(sql, CommandType.Text, null);
        }

        /// 
        ///            
        /// 
        ///          sql  
        ///           ,       sql    
        /// 
        public int ExecuteNonQuery(string sql, CommandType commandType)
        {
            return ExecuteNonQuery(sql, commandType, null);
        }

        /// 
        ///             
        /// 
        ///     sql  
        ///           ,       sql    
        /// Transact-SQL             
        /// 
        public int ExecuteNonQuery(string sql, CommandType commandType, SqlParameter[] parameters)
        {
            int count = 0;
            SqlConnection con = new SqlConnection(connectionString);
            SqlCommand cmd = new SqlCommand(sql, con);
            cmd.CommandType = commandType;
            if (parameters != null)
            {
                foreach(SqlParameter parameter in parameters)
                {
                    cmd.Parameters.Add(parameter);
                }
            }

            con.Open();
            count = cmd.ExecuteNonQuery();
            con.Close();
            return count;
        }

        /// 
        ///                      
        /// 
        /// 
        public DataTable GetTables()
        {
            DataTable table = null;
            using (SqlConnection con = new SqlConnection(connectionString))
            {
                con.Open();
                table = con.GetSchema("Tables");

            }
            return table;
        }
    }

만약에 우리가 데이터베이스에 접근하는 유니버설 클래스를 구축한 후에 데이터베이스에 따라 조작할 때요? 먼저 실례화된 대상을 만들고 자신의 수요에 따라 해당하는 방법을 사용하면 데이터베이스에 대한 모든 조작을 완성할 수 있습니다.이것이 바로 데이터베이스 접근층과 업무 논리층이 분리된 장점이다.
이렇게 쓴 코드는 우리 코드의 복잡도를 크게 줄일 수 있다.그리고 번거로움도 크게 떨어졌다.
판권 성명: 본고는 블로거의 오리지널 문장으로 블로거의 허락 없이 전재할 수 없습니다.
전재 대상:https://www.cnblogs.com/yisuowushinian/archive/2012/09/20/4715649.html

좋은 웹페이지 즐겨찾기