namespace Login
{
class SqlHelper
{ //连接数据库的字符串
//static string dataConnection = "server=***-PC;database=HeiMa;uid=sa;pwd=********";
//使用配置文件连接数据库的方法
//1.WinForm项目,请添加对“System.Configuration”的引用
//2.对配置文件connectionStrings节进行读取
static string dataConnection = System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; #region 返回一张执行查询的表+static DataTable ExecuteDataTable(string sql, params SqlParameter[] param)
/// <summary>
/// 返回一张执行查询的表
/// </summary>
/// <param name="sql">执行的数据库查询语句</param>
/// <param name="param">添加入查询语句的参数(参数化查询)</param>
/// <returns>返回执行的一张结果集的表</returns>
public static DataTable ExecuteDataTable(string sql, params SqlParameter[] param)
{ //创建一个临时数据集,存在内存中
DataSet ds = new DataSet(); //创建一个适配器并连接数据库通道
SqlDataAdapter sda = new SqlDataAdapter(sql, dataConnection); //给适配器对象的查询命令添加参数
sda.SelectCommand.Parameters.AddRange(param); //捕获异常,为的是不知道返回是否有数值
try
{
sda.Fill(ds); //如果有返回数值,则填充
DataTable dt = ds.Tables[];//获得第一张表
return dt;
}
catch
{
return null;//没有表时,返回空
} }
#endregion
#region 返回受影响的行数+static int ExecuteNonQuery(string sql, params SqlParameter[] param)
/// <summary>
/// 返回受影响的行数
/// </summary>
/// <param name="sql">执行数据库的查询语句</param>
/// <param name="param">传递参数(参数化查询)</param>
/// <returns>返回受影响的行数</returns>
public static int ExecuteNonQuery(string sql, params SqlParameter[] param)
{
//创建连接数据库的通道
using (SqlConnection conns = new SqlConnection(dataConnection))
{ //创建执行命令对象,并连接数据库通道
using (SqlCommand cmd = new SqlCommand(sql, conns))
{ //将参数添加到命令对象中
cmd.Parameters.AddRange(param);
//打开数据库
conns.Open();
//返回受影响的行数
return cmd.ExecuteNonQuery(); }
} } #endregion #region 返回查询结果的第一行第一列的值+static object ExecuteScalar(string sql, params SqlParameter[] param)
/// <summary>
/// 返回查询结果的第一行第一列的值
/// </summary>
/// <param name="sql">传入数据库查询语句</param>
/// <param name="param">传入数据库查询需要的查询参数</param>
/// <returns>返回查询结果的第一行第一列的</returns>
public static object ExecuteScalar(string sql, params SqlParameter[] param)
{
using (SqlConnection conn = new SqlConnection(dataConnection))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{ //传入参数
cmd.Parameters.AddRange(param);
conn.Open();
return cmd.ExecuteScalar();
}
} }
#endregion }
}

简单的SqlHelper的更多相关文章

  1. 简单的sqlhelper的学习日志

    一:今天做了一个简单的sqlhelper,还有调用,将今天学的内容总结一下,解决方案如下: 二:对应的sqlhelper的内容: using System; using System.Collecti ...

  2. SqlHelper简单实现(通过Expression和反射)1.引言

    之前老大说要改变代码中充斥着各种Select的Sql语句字符串的情况,让我尝试着做一个简单的SqlHelper,要具有以下功能: 1.不要在业务代码中暴露DataTable或者DataSet类型: 2 ...

  3. "类工厂模式"改写SqlHelper

    看到标题您一定很疑惑,23种经典设计模式什么时候多了一个"类工厂模式",稍等,请听我慢慢道来. 实践是检验真理的唯一途径.最近用了"类工厂模式"改写了我公司的S ...

  4. 牛腩新闻发布系统(二):SQLHelper重构(二)

    导读:在上一篇博客中,介绍了简单的SQLHelper重构,即数据库链接,打开和关闭链接的优化等.现在,将介绍参数化查询和执行命令类型的改造. 一.必要性 1,参数化查询 在上篇博客中,在查询的时候,仅 ...

  5. 图解“管道过滤器模式”应用实例:SOD框架的命令执行管道

    管道和过滤器 管道和过滤器是八种体系结构模式之一,这八种体系结构模式是:层.管道和过滤器.黑板.代理者.模型-视图-控制器(MVC) 表示-抽象-控制(PAC).微核.映像. 管道和过滤器适用于需要渐 ...

  6. Asp.Net MVC<一> : 三层架构、MVC

    MVC.MVP.MVVM.Angular.js.Knockout.js.Backbone.js.React.js.Ember.js.Avalon.js.Vue.js 概念摘录 认清Android框架 ...

  7. 如何在ASP.NET 5中使用ADO.NET

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:ASP.NET 5是一个全新的平台,在这个平台上也带来一些全新的函数库.不过这并非意味 ...

  8. 【WCF 1】WCF框架宏观了解

    导读:使用WCF框架爱开发项目也有很长一段时间了,最开始的时候,是理解的不深,所以不写博客进行总结.后来是项目赶,发现需要总结的有很多,一直没有把WCF排上日程,尤其是最近研究EF这一块,更是研究了一 ...

  9. html + ashx 实现Ajax省市联动

    基本思路:1.了解数据库中省和市的表结构及关联主键 2.创建html页面及select标签 3.通过ajax向ashx(一般处理程序)发送后台请求完成联动效果 表结构: 这里,开始创建一个命为demo ...

随机推荐

  1. WMDestroy函数调用inherited,难道是为了调用子类覆盖函数?还有这样调用的?

    又碰到了: procedure TWinControl.WMDestroy(var Message: TWMDestroy); begin inherited; // important7 fixme ...

  2. 内存管理(memory allocation内存分配)

    Memory management is the act of managing computer memory. The essential requirement of memory manage ...

  3. Java:多线程,线程池,使用CompletionService通过Future来处理Callable的返回结果

    1. 背景 在Java5的多线程中,可以使用Callable接口来实现具有返回值的线程.使用线程池的submit方法提交Callable任务,利用submit方法返回的Future存根,调用此存根的g ...

  4. asp.net生成二维码的方法

    asp.net生成二维码的方法 [复制链接]     这个要利用一个Dll文件. 如下 Gma.QrCodeNet.Encoding.dll (105.5 KB, 下载次数: 27) 当然大家也可以直 ...

  5. HDU 3507 Print Article(DP+斜率优化)

     Print Article Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) ...

  6. this用法

    this是js的一个关键字,随着函数使用场合不同,this的值会发生变化.但是总有一个原则,那就是this指的是调用函数的那个对象. 1.纯粹函数调用. function test() { this. ...

  7. ClientScriptManager与ScriptManager向客户端注册脚本的区别

    使用ClientScriptManager向客户端注册脚本 ClientScriptManager在非异步(就是说非AJAX)环境下使用的.如果要在异步环境下注册脚本应该使用ScriptManager ...

  8. SQL 查询条件放在LEFT OUTER JOIN 的ON语句后与放在WHERE中的区别

    这两种条件放置的位置不同很容易让人造成混淆,以致经常查询出莫名其妙的结果出来,特别是副本的条件与主表不匹配时,下面以A,B表为例简单说下我的理解. 首先要明白的是: 跟在ON 后面的条件是对参与左联接 ...

  9. 【Android - 框架】之GreenDao的使用

    上一篇博客([Android - 框架]之ORMLite的使用)中介绍了ORMLite的基本使用,今天我们来研究以下GreenDao的使用. GreenDao和ORMLite一样,都是基于ORM(Ob ...

  10. 小猪的Android入门之路 Day 3 - part 3

    小猪的Android入门之路 Day 3 - part 3 各种UI组件的学习 Part 3 本节引言: 在前面两个部分中我们对Android中一些比較经常使用的基本组件进行了一个了解, part 1 ...