CS通用项目系统搭建——三层架构第二天 (补一篇完整的SqlHelper)
#region ExecuteNonQuery(如果是增,删,修)
/// <summary>
/// 执行sql命令
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="commandType">命令类型</param>
/// <param name="commandText">sql语句/参数化sql语句/存储过程名</param>
/// <param name="commandParameters">参数</param>
/// <returns>受影响的行数</returns>
public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
{ SqlCommand cmd = new SqlCommand(); using (SqlConnection conn = new SqlConnection(connectionString))
{
PrepareCommand(cmd, commandType, conn, commandText, commandParameters);
int val = cmd.ExecuteNonQuery(); return val;
}
} /// <summary>
/// 执行Sql Server存储过程
/// 注意:不能执行有out 参数的存储过程
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="spName">存储过程名</param>
/// <param name="parameterValues">对象参数</param>
/// <returns>受影响的行数</returns>
public static int ExecuteNonQuery(string connectionString, string spName, params object[] parameterValues)
{ using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, conn, spName, parameterValues);
int val = cmd.ExecuteNonQuery(); return val;
}
}
#endregion #region ExecuteReader(如果只是读数据)
/// <summary>
/// 执行sql命令
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="commandType">命令类型</param>
/// <param name="commandText">sql语句/参数化sql语句/存储过程名</param>
/// <param name="commandParameters">参数</param>
/// <returns>SqlDataReader 对象</returns>
public static SqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
{ SqlConnection conn = new SqlConnection(connectionString);
try
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, commandType, conn, commandText, commandParameters);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); return rdr;
}
catch
{
conn.Close();
throw;
}
} /// <summary>
/// 执行Sql Server存储过程
/// 注意:不能执行有out 参数的存储过程
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="spName">存储过程名</param>
/// <param name="parameterValues">对象参数</param>
/// <returns>受影响的行数</returns>
public static SqlDataReader ExecuteReader(string connectionString, string spName, params object[] parameterValues)
{
SqlConnection conn = new SqlConnection(connectionString);
try
{
SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, conn, spName, parameterValues);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); return rdr;
}
catch
{
conn.Close();
throw;
} }
#endregion #region ExecuteDataset(如果查询一个数据集) /// <summary>
/// 执行Sql Server存储过程
/// 注意:不能执行有out 参数的存储过程
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="spName">存储过程名</param>
/// <param name="parameterValues">对象参数</param>
/// <returns>DataSet对象</returns>
public static DataSet ExecuteDataset(string connectionString, string spName, params object[] parameterValues)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, conn, spName, parameterValues); using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataSet ds = new DataSet(); da.Fill(ds); return ds;
}
}
} /// <summary>
/// 执行Sql 命令
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="commandType">命令类型</param>
/// <param name="commandText">sql语句/参数化sql语句/存储过程名</param>
/// <param name="commandParameters">参数</param>
/// <returns>DataSet 对象</returns>
public static DataSet ExecuteDataset(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{ SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, commandType, conn, commandText, commandParameters);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataSet ds = new DataSet(); da.Fill(ds); return ds;
}
}
} #endregion #region ExecuteScalar (如果你只查询一个值)
/// <summary>
/// 执行Sql 命令
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="commandType">命令类型</param>
/// <param name="commandText">sql语句/参数化sql语句/存储过程名</param>
/// <param name="commandParameters">参数</param>
/// <returns>执行结果对象</returns>
public static object ExecuteScalar(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand(); using (SqlConnection conn = new SqlConnection(connectionString))
{
PrepareCommand(cmd, commandType, conn, commandText, commandParameters);
object val = cmd.ExecuteScalar(); return val;
}
} /// <summary>
/// 执行Sql Server存储过程
/// 注意:不能执行有out 参数的存储过程
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="spName">存储过程名</param>
/// <param name="parameterValues">对象参数</param>
/// <returns>执行结果对象</returns>
public static object ExecuteScalar(string connectionString, string spName, params object[] parameterValues)
{
SqlCommand cmd = new SqlCommand(); using (SqlConnection conn = new SqlConnection(connectionString))
{
PrepareCommand(cmd, conn, spName, parameterValues);
object val = cmd.ExecuteScalar(); return val;
}
} #endregion #region Private Method
/// <summary>
/// 设置一个等待执行的SqlCommand对象
/// </summary>
/// <param name="cmd">SqlCommand 对象,不允许空对象</param>
/// <param name="conn">SqlConnection 对象,不允许空对象</param>
/// <param name="commandText">Sql 语句</param>
/// <param name="cmdParms">SqlParameters 对象,允许为空对象</param>
private static void PrepareCommand(SqlCommand cmd, CommandType commandType, SqlConnection conn, string commandText, SqlParameter[] cmdParms)
{
//打开连接
if (conn.State != ConnectionState.Open)
conn.Open(); //设置SqlCommand对象
cmd.Connection = conn;
cmd.CommandText = commandText;
cmd.CommandType = commandType; if (cmdParms != null)
{
foreach (SqlParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
} /// <summary>
/// 设置一个等待执行存储过程的SqlCommand对象
/// </summary>
/// <param name="cmd">SqlCommand 对象,不允许空对象</param>
/// <param name="conn">SqlConnection 对象,不允许空对象</param>
/// <param name="spName">Sql 语句</param>
/// <param name="parameterValues">不定个数的存储过程参数,允许为空</param>
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, string spName, params object[] parameterValues)
{
//打开连接
if (conn.State != ConnectionState.Open)
conn.Open(); //设置SqlCommand对象
cmd.Connection = conn;
cmd.CommandText = spName;
cmd.CommandType = CommandType.StoredProcedure; //获取存储过程的参数
SqlCommandBuilder.DeriveParameters(cmd); //移除Return_Value 参数
cmd.Parameters.RemoveAt(); //设置参数值
if (parameterValues != null)
{
for (int i = ; i < cmd.Parameters.Count; i++)
{
cmd.Parameters[i].Value = parameterValues[i]; }
}
}
#endregion
#region ExecuteNonQuery(如果是增,删,修) /// <summary> /// 执行sql命令 /// </summary> /// <param name="connectionString">连接字符串</param> /// <param name="commandType">命令类型</param> /// <param name="commandText">sql语句/参数化sql语句/存储过程名</param> /// <param name="commandParameters">参数</param> /// <returns>受影响的行数</returns> public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters) {
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(connectionString)) { PrepareCommand(cmd, commandType, conn, commandText, commandParameters); int val = cmd.ExecuteNonQuery();
return val; } }
/// <summary> /// 执行Sql Server存储过程 /// 注意:不能执行有out 参数的存储过程 /// </summary> /// <param name="connectionString">连接字符串</param> /// <param name="spName">存储过程名</param> /// <param name="parameterValues">对象参数</param> /// <returns>受影响的行数</returns> public static int ExecuteNonQuery(string connectionString, string spName, params object[] parameterValues) {
using (SqlConnection conn = new SqlConnection(connectionString)) { SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, conn, spName, parameterValues); int val = cmd.ExecuteNonQuery();
return val; } } #endregion
#region ExecuteReader(如果只是读数据) /// <summary> /// 执行sql命令 /// </summary> /// <param name="connectionString">连接字符串</param> /// <param name="commandType">命令类型</param> /// <param name="commandText">sql语句/参数化sql语句/存储过程名</param> /// <param name="commandParameters">参数</param> /// <returns>SqlDataReader 对象</returns> public static SqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters) {
SqlConnection conn = new SqlConnection(connectionString); try { SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, commandType, conn, commandText, commandParameters); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return rdr; } catch { conn.Close(); throw; } }
/// <summary> /// 执行Sql Server存储过程 /// 注意:不能执行有out 参数的存储过程 /// </summary> /// <param name="connectionString">连接字符串</param> /// <param name="spName">存储过程名</param> /// <param name="parameterValues">对象参数</param> /// <returns>受影响的行数</returns> public static SqlDataReader ExecuteReader(string connectionString, string spName, params object[] parameterValues) { SqlConnection conn = new SqlConnection(connectionString); try { SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, conn, spName, parameterValues); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return rdr; } catch { conn.Close(); throw; }
} #endregion
#region ExecuteDataset(如果查询一个数据集)
/// <summary> /// 执行Sql Server存储过程 /// 注意:不能执行有out 参数的存储过程 /// </summary> /// <param name="connectionString">连接字符串</param> /// <param name="spName">存储过程名</param> /// <param name="parameterValues">对象参数</param> /// <returns>DataSet对象</returns> public static DataSet ExecuteDataset(string connectionString, string spName, params object[] parameterValues) { using (SqlConnection conn = new SqlConnection(connectionString)) { SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, conn, spName, parameterValues);
using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { DataSet ds = new DataSet();
da.Fill(ds);
return ds; } } }
/// <summary> /// 执行Sql 命令 /// </summary> /// <param name="connectionString">连接字符串</param> /// <param name="commandType">命令类型</param> /// <param name="commandText">sql语句/参数化sql语句/存储过程名</param> /// <param name="commandParameters">参数</param> /// <returns>DataSet 对象</returns> public static DataSet ExecuteDataset(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters) { using (SqlConnection conn = new SqlConnection(connectionString)) {
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, commandType, conn, commandText, commandParameters); using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { DataSet ds = new DataSet();
da.Fill(ds);
return ds; } } }
#endregion
#region ExecuteScalar (如果你只查询一个值) /// <summary> /// 执行Sql 命令 /// </summary> /// <param name="connectionString">连接字符串</param> /// <param name="commandType">命令类型</param> /// <param name="commandText">sql语句/参数化sql语句/存储过程名</param> /// <param name="commandParameters">参数</param> /// <returns>执行结果对象</returns> public static object ExecuteScalar(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(connectionString)) { PrepareCommand(cmd, commandType, conn, commandText, commandParameters); object val = cmd.ExecuteScalar();
return val; } }
/// <summary> /// 执行Sql Server存储过程 /// 注意:不能执行有out 参数的存储过程 /// </summary> /// <param name="connectionString">连接字符串</param> /// <param name="spName">存储过程名</param> /// <param name="parameterValues">对象参数</param> /// <returns>执行结果对象</returns> public static object ExecuteScalar(string connectionString, string spName, params object[] parameterValues) { SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(connectionString)) { PrepareCommand(cmd, conn, spName, parameterValues); object val = cmd.ExecuteScalar();
return val; } }
#endregion
#region Private Method /// <summary> /// 设置一个等待执行的SqlCommand对象 /// </summary> /// <param name="cmd">SqlCommand 对象,不允许空对象</param> /// <param name="conn">SqlConnection 对象,不允许空对象</param> /// <param name="commandText">Sql 语句</param> /// <param name="cmdParms">SqlParameters 对象,允许为空对象</param> private static void PrepareCommand(SqlCommand cmd, CommandType commandType, SqlConnection conn, string commandText, SqlParameter[] cmdParms) { //打开连接 if (conn.State != ConnectionState.Open) conn.Open();
//设置SqlCommand对象 cmd.Connection = conn; cmd.CommandText = commandText; cmd.CommandType = commandType;
if (cmdParms != null) { foreach (SqlParameter parm in cmdParms) cmd.Parameters.Add(parm); } }
/// <summary> /// 设置一个等待执行存储过程的SqlCommand对象 /// </summary> /// <param name="cmd">SqlCommand 对象,不允许空对象</param> /// <param name="conn">SqlConnection 对象,不允许空对象</param> /// <param name="spName">Sql 语句</param> /// <param name="parameterValues">不定个数的存储过程参数,允许为空</param> private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, string spName, params object[] parameterValues) { //打开连接 if (conn.State != ConnectionState.Open) conn.Open();
//设置SqlCommand对象 cmd.Connection = conn; cmd.CommandText = spName; cmd.CommandType = CommandType.StoredProcedure;
//获取存储过程的参数 SqlCommandBuilder.DeriveParameters(cmd);
//移除Return_Value 参数 cmd.Parameters.RemoveAt(0);
//设置参数值 if (parameterValues != null) { for (int i = 0; i < cmd.Parameters.Count; i++) { cmd.Parameters[i].Value = parameterValues[i];
} } } #endregion
CS通用项目系统搭建——三层架构第二天 (补一篇完整的SqlHelper)的更多相关文章
- CS通用项目系统搭建——三层架构第二天
一.编写配置文件 首先找到编写配置文件的位置.winform会在app.config.webform写在web.config中. <?xml version="1.0" en ...
- CS通用项目系统搭建——三层架构第一天
CS通用项目:使用三层架构进行搭建 三层架构: 表现层(UI(User Interface)):展示给用户的层面,包含窗体控件数据等信息. 业务逻辑层(BLL(Business Logic Layer ...
- 关于ASP.NET或VS2005 搭建三层架构的理解
最近想学习ASP.NET建网站,关于ASP.NET或VS2005 搭建三层架构的理解,网上摘录了一些资料,对于第(2)点的讲解让我理解印象深刻,如下: (1)为何使用N层架构? 因为每一层都可以在仅仅 ...
- MVC项目实践,在三层架构下实现SportsStore-02,DbSession层、BLL层
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
- MVC项目实践,在三层架构下实现SportsStore-01,EF Code First建模、DAL层等
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
- MVC项目实践,在三层架构下实现SportsStore,从类图看三层架构
在"MVC项目实践,在三层架构下实现SportsStore-02,DbSession层.BLL层"一文的评论中,博友浪花一朵朵建议用类图来理解本项目的三层架构.于是就有了本篇: I ...
- MVC项目实践,在三层架构下实现SportsStore-03,Ninject控制器工厂等
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
- MVC项目实践,在三层架构下实现SportsStore-04,实现分页
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
- MVC项目实践,在三层架构下实现SportsStore-05,实现导航
SportsStore是<精通ASP.NET MVC3框架(第三版)>中演示的MVC项目,在该项目中涵盖了MVC的众多方面,包括:使用DI容器.URL优化.导航.分页.购物车.订单.产品管 ...
随机推荐
- homework 张一刚
#include<stdio.h> #include<unistd.h> #include<sys/types.h> #include<sys/stat.h& ...
- 获取邮箱使用情况、以及最后一次logon时间
# 每天收发邮件数 # https://gallery.technet.microsoft.com/scriptcenter/Count-sent-and-recceived-f9c66cf7 # 获 ...
- 猜测的rpc负载均衡原理,基于dubbo的架构
集群层(Cluster):封装多个提供者的路由及负载均衡,并桥接注册中心,以Invoker为中心,扩展接口为Cluster.Directory.Router和LoadBalance.将多个服务提供方组 ...
- Redis配置不当致使root被提权漏洞
Redis配置不当致使root被提权漏洞 Dear all~ 最近Redis服务被曝出因配置不当,可能造成数据库被恶意清空,或被黑客利用写入后门文件造成进一步入侵,请关注! 一.漏洞发布日期 2015 ...
- sudo 取消密码
通常我们并不以root身份登录,但是当我们执行某些命令 (command)时需要用到root权限,我们通常都是用"sudo command"来执行command.由于使用Ubunt ...
- 如何限制指定textFiled第三方输入法切换
在有些项目中需要用到输入纯数字的键盘,并且还不能切换到第三方输入法! textFiled.secureTextEntry = YES; [textFiled addTarget:self action ...
- [UE4]判断2个向量是否相等
一.因为向量是3个浮点数,如果不使用误差的话,计算机里面的浮点数是有一定误差的. 二.如上图所示,如果2个向量的误差1厘米(UE4的单位是厘米),则表示2个向量相等.
- Idea项目上传git(与git结合使用)
Prerequisite(前提): 1.拥有github账号 2.本地电脑安装git 3.拥有一个guthub的新仓库 一.本地git与github安全连接(若已经将本地git与github建立连接, ...
- gradle项目
gradle构建web项目 0.安装gradle http://services.gradle.org/distributions/ 下载对应版本:gradle-5.2.1-bin.zip 解压到自定 ...
- linux上安装mysql5.6
CentOS-6.6+MySQL-5.6 部署环境操作系统:CentOS-6.6-x86_64-bin-DVD1.isoMySQL 版本:mysql-5.6.26.tar.gz操作用户:root系统 ...