【目的】
保存一下代码,以后有需要到的时候,直接拿来用。
【代码】
/**************************************************************
'文件名: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
}
【总结】
得买个移动硬盘开始攒代码准备实习了。