using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Text; namespace 自己封装的SqlHelper
{ public static class SqlHelper
{ //App.config 配置文件的内容
//<?xml version="1.0" encoding="utf-8" ?>
//<configuration>
// <connectionStrings>
// <add name="sqlConnStr" connectionString="Data Source=.;initial Catalog=;integrated security =true;"/>
// </connectionStrings>
//</configuration> /// 通过配置文件来获取数据库链接字符串
private static readonly string conStr = ConfigurationManager.ConnectionStrings["sqlConnStr"].ConnectionString;
//private static readonly string constr = "Data Source=.;initial Catalog=;integrated security =true;"; /// <summary>
/// insert(插入)、delete(删除)、update(更新)
/// </summary>
/// <param name="sql">Sql命令语句</param>
/// <param name="pms">执行命令所用参数的集合</param>
/// <returns></returns>
public static int ExecuteNonQuery(string sql, params SqlParameter[] pms)
{
using (SqlConnection con = new SqlConnection(conStr))
{
using (SqlCommand cmd = new SqlCommand(sql, con))
{
//可变参数pms如果用户不传递的时候,是一个长度为0的数组。不是null。
if (pms != null)
{
cmd.Parameters.AddRange(pms);
}
con.Open();
return cmd.ExecuteNonQuery();
}
}
} /// <summary>
/// 返回单个值,第一行第一列,返回单个值的
/// </summary>
/// <param name="sql">Sql命令语句</param>
/// <param name="pms">执行命令所用参数的集合</param>
/// <returns></returns>
public static object ExecuteScalar(string sql, params SqlParameter[] pms)
{
using (SqlConnection con = new SqlConnection(conStr))
{
using (SqlCommand cmd = new SqlCommand(sql, con))
{
//可变参数pms如果用户不传递的时候,是一个长度为0的数组。不是null。
if (pms != null)
{
cmd.Parameters.AddRange(pms);
}
con.Open();
return cmd.ExecuteScalar();
}
}
}
/// <summary>
/// select 查询多行多列,调用ExecuteReader()来实现。注意:在返回的时候,reader要调用Close()来关闭对象。
/// </summary>
/// <param name="sql">Sql命令语句</param>
/// <param name="pms">执行命令所用参数的集合</param>
/// <returns></returns>
public static SqlDataReader ExecuteReader(string sql, params SqlDataReader[] pms)
{
SqlConnection con = new SqlConnection(conStr);
{
using (SqlCommand cmd = new SqlCommand(sql, con))
{
if (pms != null)
{
cmd.Parameters.AddRange(pms);
}
try
{
con.Open();
//参数System.Data.CommandBehavior.CloseConnection表示当外部调用该DataReader对象的Close()方法时,在该Close()方法内部,会自动调用与该DataReader相关联的Connection的Close()方法
return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
catch
{
////这里的关闭不要写在finally中,因为需要return 一个SqlDataReader
con.Close();////出错误时,将数据库链接及时关闭,放入“池”中
con.Dispose();
throw;////继续往上面抛出错误信息
} }
}
}
/// <summary>
/// 返回结果集DataTable
/// </summary>
/// <param name="sql">Sql命令语句</param>
/// <param name="pms">执行命令所用参数的集合</param>
/// <returns></returns>
public static DataTable ExecuteTable(string sql, params SqlParameter[] pms)
{
DataTable dt = new DataTable();
using (SqlDataAdapter adapter = new SqlDataAdapter(sql, conStr))
{
adapter.Fill(dt);
}
return dt;
}
} }

自己封装的SqlHelper的更多相关文章

  1. ADO.NET封装的SqlHelper

    参照别人的方法,顺便再次复习下ADO.NET的相关知识.为自己的类库做准备. namespace Common.SqlHelper { /// <summary> /// ADO.NET- ...

  2. 不该活着的SqlHelper和DBHelper

    前言: 还记得刚学ADO.NET的情景么? 还记得当年是怎么从ADO.NET被忽悠到用SqlHelper的么? 话说从入门到走上工作岗位那些年,我们就一直被纯纯地教导或引导,ADO.NET太原始,得封 ...

  3. ADO.NET复习——自己编写SqlHelper类

    今天复习了一次ADO.NET基础,整理一下自己的认为的重点: 编写SqlHelper类,方便我们执行数据库语句,这时可以直接调用封装在SqlHelper类的方法.现在大多数公司面试的时候,给你的面试题 ...

  4. C#开发学习——SqlHelper的应用

    使用App.config配置文件封装连接字符串,方便重复使用--->添加App.conifg配置文件--->Add : ConnectionString:--->添加引用 <? ...

  5. SqlHelper帮助类_上(SQLServer数据库含Connection详解)

    在操作数据库时,经常会用到自己封装的SqlHelper.这里主要对SQLServer数据库的Sqlhelper,主要用于在同一个连接中完成CRUD! 一.ADO.NET中的Connection详解: ...

  6. ado.net的简单数据库操作(二)之封装SqlHelperl类

    今天我书接上回,接着昨天的ado.net的数据库操作的相关知识来讲哈! 从上篇文章给出的实例来看,你一定会发现,操作数据库其实还挺麻烦的,就连一个最简单的数据库操作语句都要包括 定义数据库连接字符串. ...

  7. SqlHelper 1.0

    SqlHelper类,可以简化对数据库的操作. 将程序中需要经常用到的数据库操作,如:连接字符串.对数据的增.删.改.查封装成“SqlHelper”类中的静态属性,方便在程序各部分进行调用. 增(in ...

  8. 第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获得连接字符串

    第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获 ...

  9. SqlHelper——数据库小助手

    SqlHelper其实就是一个类. 早就听说过"SqlHelper"这个名词,也查过相关的资料,但还是一头雾水.当真的去实践去用它时,就会发现其实它没那么神秘. 当敲第一个窗体的时 ...

随机推荐

  1. CentOS 6系统下安装 JDK1.6

    CentOS 6系统下安装 JDK1.6 JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品.自从Java推出以来,JDK已经成为使用最广泛的 ...

  2. UVa673 Parentheses Balance

    // UVa673 Parentheses Balance // 题意:输入一个包含()和[]的括号序列,判断是否合法. // 具体递归定义如下:1.空串合法:2.如果A和B都合法,则AB合法:3.如 ...

  3. 【转】shell脚本处理字符串的常用方法

    转自:http://blog.csdn.net/linfeng999/article/details/6661233 1. 构造字符串 直接构造 STR_ZERO=hello #shell中等号左右的 ...

  4. linux php开启openssl

    1.测试openssl是否安装查看版本  openssl version查看路径  which openssl2.因为要扩展php扩展模块,所以要通过phpize可以建立php的外挂模块find / ...

  5. 使用proguard混淆android代码

    当前是有些工具比方apktool,dextojar等是能够对我们android安装包进行反编译,获得源代码的.为了降低被别人破解,导致源代码泄露,程序被别人盗代替码,等等.我们须要对代码进行混淆,an ...

  6. MHA自动Failover过程解析(updated) 转

    允许转载, 转载时请以超链接形式标明文章原始出处和网站信息 http://www.mysqlsystems.com/2012/03/figure-out-process-of-autofailover ...

  7. 正确率、召回率和 F 值

    原文:http://peghoty.blog.163.com/blog/static/49346409201302595935709/ 正确率.召回率和 F 值是在鱼龙混杂的环境中,选出目标的重要评价 ...

  8. 网口扫盲三:以太网芯片MAC和PHY的关系

    转载:http://www.cnblogs.com/jason-lu/articles/3195473.html   问:如何实现单片以太网微控制器? 答:诀窍是将微控制器.以太网媒体接入控制器(MA ...

  9. jsp自定义标签分页

    第一步:建立分页实体page类 package com.soda.util; /** * @description 分页实体类 * @author line * @time 2016年8月28日11: ...

  10. Firefox便携版

    安装firefox后默认配置文件在C:\Users\Administrator\AppData\Roaming\Mozilla\Firefox 可以在快捷方式里设置不同的配置文件,但是要注意参数的含义 ...