using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration; public static class SQLHelp
{
private static string constr = ConfigurationManager.ConnectionStrings["constr"].ToString(); /// <summary>
/// 用于提交Insert Update Delete 返回受影响的行数
/// </summary>
/// <param name="cmdType">操作类型StoreProcdeure 或者是 sql语句</param>
/// <param name="sql">sql语句或者存储过程的名称</param>
/// <param name="parameters">参数的数组,没有参数传递为Null值</param>
/// <returns></returns>
public static int ExecuteNonQuery(CommandType cmdType, string sql, params SqlParameter[] parameters)
{
try
{
using (var con = new SqlConnection(constr))
{
using (var cmd = new SqlCommand(sql, con))
{
cmd.CommandType = cmdType;
if (parameters != null)
{
foreach (var parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
}
con.Open();
int count = cmd.ExecuteNonQuery();
con.Close();
return count;
}
}
}
catch (Exception ex)
{
throw ex;
}
} /// <summary>
/// 用于提交select 返回 SqlDataReader ,读取完成后需要关闭SqlDataReader
/// </summary>
/// <param name="cmdType">操作类型StoreProcdeure 或者是 sql语句</param>
/// <param name="sql">sql语句或者存储过程的名称</param>
/// <param name="parameters">参数的数组,没有参数传递为Null值</param>
/// <returns></returns>
public static SqlDataReader ExecuteReader(CommandType cmdType, string sql, params SqlParameter[] parameters)
{
try
{
var con = new SqlConnection(constr);
using (var cmd = new SqlCommand(sql, con))
{
cmd.CommandType = cmdType;
if (parameters != null)
{
foreach (var parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
}
con.Open();
//关闭读取器,将自动关闭连接对象
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return dr;
}
}
catch (Exception ex)
{
throw ex;
}
} /// <summary>
/// 用于提交select中的聚合函数,返回第一行,第一列的值
/// </summary>
/// <param name="cmdType">操作类型StoreProcdeure 或者是 sql语句</param>
/// <param name="sql">sql语句或者存储过程的名称</param>
/// <param name="parameters">参数的数组,没有参数传递为Null值</param>
/// <returns></returns>
public static object ExecuteScalar(CommandType cmdType, string sql, params SqlParameter[] parameters)
{
try
{
using (var con = new SqlConnection(constr))
{
using (var cmd = new SqlCommand(sql, con))
{
cmd.CommandType = cmdType;
if (parameters != null)
{
foreach (var parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
}
con.Open();
object o = cmd.ExecuteScalar();
con.Close();
return o;
}
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 用于提交select 返回 DataSet ,数据集中默认只有一张表格
/// </summary>
/// <param name="cmdType">操作类型StoreProcdeure 或者是 sql语句</param>
/// <param name="sql">sql语句或者存储过程的名称</param>
/// <param name="parameters">参数的数组,没有参数传递为Null值</param>
/// <returns></returns>
public static DataSet ExecuteDataSet(CommandType cmdType, string sql, params SqlParameter[] parameters)
{
try
{
using (var con = new SqlConnection(constr))
{
using (var da = new SqlDataAdapter())
{
var cmd = new SqlCommand(sql, con);
cmd.CommandType = cmdType;
if (parameters != null)
{
foreach (var parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
}
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
}
}
catch (Exception ex)
{
throw ex;
}
} #region List<T> ToList<T>(string cmdText, List<DbParameter> listpar, string connString,IDbHelp db) where T : class, new()
/// <summary>
/// 返回一个list
/// </summary>
/// <typeparam name="T">实体模型</typeparam>
/// <param name="cmdType">操作类型StoreProcdeure 或者是 sql语句</param>
/// /// <param name="sql">sql语句</param>
/// <param name="parameters">参数列表</param>
/// <returns></returns>
public static List<T> ToList<T>(CommandType cmdType, string sql, params SqlParameter[] parameters) where T : class, new()
{
using (var read = ExecuteReader(cmdType,sql ,parameters))
{
List<T> list = null;
var type = typeof(T);
if (read.HasRows)
{
list = new List<T>();
}
while (read.Read())
{
T t = new T();
foreach (PropertyInfo item in type.GetProperties())
{
for (int i = ; i < read.FieldCount; i++)
{
//属性名与查询出来的列名比较
if (item.Name.ToLower() != read.GetName(i).ToLower()) continue;
object value = read[i];
if (value != DBNull.Value)
{
item.SetValue(t, value, null);
}
break;
}
}
//将创建的对象添加到集合中
list.Add(t);
}
return list;
}
}
#endregion }

SqlServerHelp的更多相关文章

  1. 数据库帮助类 SqlServerHelp

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  2. SQL SA密码丢失

    ------------记不清了,以下似乎是这样操作的-----NET STOP MSSQLSERVER Net Start MSSQLServer /m"SQLCMD" 安装并使 ...

  3. Chapter 2 User Authentication, Authorization, and Security(4):限制SA帐户管理权限

    原版的:http://blog.csdn.net/dba_huangzj/article/details/38817915,专题文件夹:http://blog.csdn.net/dba_huangzj ...

  4. SQL Server SA 最佳实践(也许不仅仅是翻译)

    老实说,本文主要部分是翻译的,并且由于英语水平的问题,我没有完全翻译,有些我觉得不重要的就跳过了,目前看来应该八九不离十,或者说不会影响最终效果,对于英语水平好的读者,可以自行查看原文.但这一年里面我 ...

  5. Chapter 2 User Authentication, Authorization, and Security(4):限制SA帐号的管理权限

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/38817915,专题目录:http://blog.csdn.net/dba_huangzj ...

  6. SqlBulkCopy批量添加

    /// <summary> /// 添加数据 /// 注:DataTable列名必须和数据库列名一致 /// </summary> /// <returns>< ...

  7. 谁把我的表给drop了?

    今天生产上有人把几张表给DROP了,一通折腾.恢复备份导数回来数据,重建索引. 但是,我就想知道是谁给干掉了. 到你被删除表数据库中找日志吧.其它的也想不到更好办法了 USE '被删表数据库' --查 ...

随机推荐

  1. Intel Xeon E5-2620 v4参数

    基本参数 CPU系列 Xeon E5 v4系列 制作工艺 14纳米 核心代号 Broadwell 性能参数 核心数量 八核心 线程数量 十六线程 CPU主频 2.1GHz 动态加速频率 3GHz L3 ...

  2. Faster_RCNN 1.准备工作

    总结自论文:Faster_RCNN,与Pytorch代码: 代码结构:  simple-faster-rcnn-pytorch.py data __init__.py dataset.py util. ...

  3. http://nancyfx.org + ASPNETCORE

    商务产品servicestack:  https://servicestack.net/ http://nancyfx.org  +  ASPNETCORE http://nancyfx.org    ...

  4. matlab处理手写识别问题

    初学神经网络算法--梯度下降.反向传播.优化(交叉熵代价函数.L2规范化) 柔性最大值(softmax)还未领会其要义,之后再说 有点懒,暂时不想把算法重新总结,先贴一个之前做过的反向传播的总结ppt ...

  5. c#基础之异常处理

    在开发过程中,经常遇到各种各样的小问题,很多是由于基础不牢固,没有经常总结导致的.遇到重复的问题可能可根据以往经验处理,但是对问题本身引发的原因进行深入的了解.工作很多年,但是c#基础像一层冰一样,可 ...

  6. MySQL 索引原理相关文章

    CSDN的整理: http://bbs.csdn.net/topics/392265880 引擎在磁盘中存储顺序的图解: http://blog.csdn.net/php_lzr/article/de ...

  7. docker里面运行jenkins详解

    需求:将jenkins运行在docker中 思路:1.安装docker,并启动docker 服务            2.下载jenkins的docker镜像,然后运行. 前提知识:1.dockde ...

  8. Android中验证输入是否为汉字、手机号及邮箱

    1,验证是否为汉字 Code// 验证昵称 private boolean verifyNickname() { String nickname = edt_username.getText().to ...

  9. JAVA中获取键盘输入的方法总结

    Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!下面介绍三种解决方法: 方法一: ...

  10. 安娜Anna:世界最快的超级伸缩的KVS, 秒杀Redis

    伯克利 这个大学在计算机学术界.工业界的地位举足轻重,其中的AMP实验室曾开发出了一大批大获成功. 对计算机行业产生深远影响的分布式计算技术,包括 Spark.Mesos.Tachyon 等.作为AM ...