【C#】写给自己的传入sql的D层

【目的】

保存一下代码,以后有需要到的时候,直接拿来用。

【代码】

/**************************************************************
'文件名:DAL 
'命名空间:DAL 
'内容:
'功能:传入sql语句实现对表的增删改查
'作者:宋荣凯
'小组:郝张晶组
'生成日期:2016年7月23日20:30:06
'版本号:v1.0.0.0
'修改日志:
'版权说明:
'**************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace DAL
{
    public class DAL
    {
        private SQLHelper sqlhelper = null;
        public DAL() { sqlhelper =new SQLHelper() ;}
        public bool AddExecAddDelUpdate(string sql) 
        {
            bool flag = false;
            int isSuccess = sqlhelper.ExecAddDelUpdate(sql, CommandType.Text);
            if (isSuccess > 0)
            {
                flag = true;
            }
            return flag;
        }
        public  DataTable SelectUser(string sql )
        {
            
            DataTable dt = new DataTable();
            dt = sqlhelper.ExecSelect(sql, CommandType.Text);
            return dt;
            
       

        }
    
    }
}

D层代码



sqlhelper代码

/**************************************************************
'文件名:SQLHelper
'命名空间:DAL 
'内容:
'功能:根据配置文件建立数据库连接,生成数据库增删改查的基本方法。
'作者:宋荣凯
'小组:郝张晶组
'生成日期:2016年7月23日20:30:06
'版本号:v1.0.0.0
'修改日志:
'版权说明:
'**************************************************************/


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;

public class SQLHelper
{

    private SqlConnection conn = null;
    private SqlCommand cmd = null;
    private SqlDataReader sdr = null;

    public SQLHelper()
    {
        string connStr = ConfigurationManager.ConnectionStrings["connString"].ConnectionString;
        conn = new SqlConnection(connStr);

    }
    #region 打开数据库连接-GetConn-宋荣凯-2016年11月18日15:55:01
    /// <summary>
    /// 打开数据库连接
    /// </summary>
    /// <returns></returns>
    private SqlConnection GetConn()
    {
        if (conn.State == ConnectionState.Closed)
        {
            conn.Open();
        }
        return conn;
    }

    #endregion
    #region 带参数的增删改操作-ExecAdddelUpdate-宋荣凯-2016年11月18日15:55:45


    /// <summary>
    /// 带参数的增删改操作。
    /// </summary>
    /// <param name="sql">sql语句</param>
    /// <param name="ct">cmd类型</param>
    /// <param name="paras">参数集合</param>
    /// <returns></returns>
    public int ExecAddDelUpdate(SqlParameter[] sqlParams, string cmdText, CommandType cmdType)
    {
        int res;
        using (cmd = new SqlCommand(cmdText, GetConn()))
        {
            cmd.CommandType = cmdType;
            cmd.Parameters.AddRange(sqlParams);
            res = cmd.ExecuteNonQuery();

        }

        return res;
    }

    #endregion
    #region 向数据库中增删改数据-ExecAddDelUpdate-宋荣凯-2016年11月18日15:57:01
 
    /// sqlhelper 向数据库中增删改数据
    /// </summary>
    /// <param name="sql"> 对应的sql语句</param>
    /// <returns></returns>
    public int ExecAddDelUpdate(String cmdText, CommandType cmdType)
    {
        int res;
        try
        {
            SqlCommand cmd = new SqlCommand(cmdText, GetConn());
            cmd.CommandType = cmdType;
            res = cmd.ExecuteNonQuery();

        }
        catch (Exception ex)
        {

            throw ex;
        }
        finally
        {
            if (conn.State == ConnectionState.Open)
            {
                conn.Close();
            }
        }
        return res;
    }
    #endregion


    #region 执行拥有参数的查询操作-ExecSelect-宋荣凯-2016年11月18日16:01:54
    /// <summary>
    /// 执行拥有参数的查询操作
    /// </summary>
    /// <param name="cmdText">SQL语句内容或存储过程名称</param>
    /// <param name="ct"> cmd类型 存储过程或SQL语句</param>
    /// <returns></returns>
    public DataTable ExecSelect(SqlParameter[] sqlParams, string cmdText, CommandType cmdType)
    {

        DataTable dt = new DataTable();
        cmd = new SqlCommand(cmdText, GetConn());
        cmd.CommandType = cmdType;
        cmd.Parameters.AddRange(sqlParams);
        using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
        {
            dt.Load(sdr);

        }
        return dt;
    }
    #endregion


    #region  执行传入sql的查询语句或存储过程-宋荣凯-2016年11月18日16:45:36

    /// <summary>
    /// 执行传入sql的查询语句或存储过程
    /// </summary>
    /// <param name="sql">sql语句</param>
    /// <returns></re      turns>
    public DataTable ExecSelect(string cmdText,CommandType cmdType)
    {
        DataTable table = new DataTable();
        cmd = new SqlCommand(cmdText, GetConn());
        using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
        {
            table.Load(sdr);
        }
        return table;

    }
    #endregion
   

}//end SQLHelper

转泛型的类

/**************************************************************
'文件名:DAL 
'命名空间:DAL 
'内容:
'功能:将DataTable转换为泛型
'作者:宋荣凯
'小组:郝张晶组
'生成日期:2016年7月23日20:30:06
'版本号:v1.0.0.0
'修改日志:
'版权说明:
'**************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection ;
using System.Data;


    public class ConvertHelper
    {
        #region 将传入的DateTable转为泛型-convertToList-宋荣凯-2016年11月20日16:40:28
        public List<T> convertToList<T>(DataTable dt) where T : new()
        {
            // 定义集合   
            List<T> ts = new List<T>();
            // 获得此模型的类型   
            Type type = typeof(T);
            //定义一个临时变量   
            string tempName = string.Empty;
            //遍历DataTable中所有的数据行    
            foreach (DataRow dr in dt.Rows)
            {
                T t = new T();
                // 获得此模型的公共属性   
                PropertyInfo[] propertys = t.GetType().GetProperties();
                //遍历该对象的所有属性   
                foreach (PropertyInfo pi in propertys)
                {
                    tempName = pi.Name;//将属性名称赋值给临时变量     
                    //检查DataTable是否包含此列(列名==对象的属性名)       
                    if (dt.Columns.Contains(tempName))
                    {
                        // 判断此属性是否有Setter     
                        if (!pi.CanWrite) continue;//该属性不可写,直接跳出     
                        //取值     
                        object value = dr[tempName];
                        //如果非空,则赋给对象的属性     
                        if (value != DBNull.Value)
                            pi.SetValue(t, value, null);
                    }
                }
                //对象添加到泛型集合中   
                ts.Add(t);
            }
            return ts;
        }
        #endregion
       
    }



【总结】

得买个移动硬盘开始攒代码准备实习了。

评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农胖虎-java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值