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. Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())

    在Qt中设置widget背景颜色或者图片方法很多种:重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等. 但是各种方法都有其注意事项,如果不注意则很容易 ...

  2. struts2+jsp+jquery+Jcrop实现图片裁剪并上传

    <1> 使用html标签上传需要裁剪的大图. <2> 在页面呈现大图,使用Jcrop(Jquery)对大图进行裁剪,并且可以进行预览. <3> 选择好截取部分之后发 ...

  3. linux No manual entry for

    我的博客:www.while0.com 原来除了安装man,还要安装man-pages. yum install man -y yum install man-pages -y

  4. jQuery zxxbox弹出框插件(v3.0)

    插件地址: http://www.zhangxinxu.com/study/201009/jquery-zxxbox-v3-demo.html

  5. 【传】玩转Android---UI篇---ImageButton(带图标的按钮)

    原文网址:http://hualang.iteye.com/blog/964049 除了Android系统自带的Button按钮一万,还提供了带图标的按钮ImageButton 要制作带图标的按钮,首 ...

  6. 双11不再孤单,结识ECharts---强大的常用图表库

    又是一年双十一,广大单身狗们有没有很寂寞(好把,其实我也是)!但是这次的双十一,我不再孤单,因为结识了一个js的强大的图表库---ECharts. 最近做软件工程项目的时候,由于设计图中有柱状图和饼图 ...

  7. Linux学习笔记4——函数调用栈空间的分配与释放

    一.函数执行时使用栈空间作为自己的临时栈,3种方式决定编译器清空栈的方式:__stdcall. __fastcall.__cdecl 1.__stdcall表示每个调用者负责清空自己调用的函数的临时栈 ...

  8. python数据类型和3个重要函数

    Python中所有变量都是值的引用,也就说变量通过绑定的方式指向其值. 而这里说的不可变指的是值的不可变. 对于不可变类型的变量,如果要更改变量,则会创建一个新值,把变量绑定到新值上,而旧值如果没有被 ...

  9. ifndef系列

    文件中的#ifndef 头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了, ...

  10. appium api

    AppiumDriver getAppStrings()      默认系统语言对应的Strings.xml文件内的数据.iOS driver.getAppStrings(Stringlanguage ...