自己封装的SqlHelper
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的更多相关文章
- ADO.NET封装的SqlHelper
参照别人的方法,顺便再次复习下ADO.NET的相关知识.为自己的类库做准备. namespace Common.SqlHelper { /// <summary> /// ADO.NET- ...
- 不该活着的SqlHelper和DBHelper
前言: 还记得刚学ADO.NET的情景么? 还记得当年是怎么从ADO.NET被忽悠到用SqlHelper的么? 话说从入门到走上工作岗位那些年,我们就一直被纯纯地教导或引导,ADO.NET太原始,得封 ...
- ADO.NET复习——自己编写SqlHelper类
今天复习了一次ADO.NET基础,整理一下自己的认为的重点: 编写SqlHelper类,方便我们执行数据库语句,这时可以直接调用封装在SqlHelper类的方法.现在大多数公司面试的时候,给你的面试题 ...
- C#开发学习——SqlHelper的应用
使用App.config配置文件封装连接字符串,方便重复使用--->添加App.conifg配置文件--->Add : ConnectionString:--->添加引用 <? ...
- SqlHelper帮助类_上(SQLServer数据库含Connection详解)
在操作数据库时,经常会用到自己封装的SqlHelper.这里主要对SQLServer数据库的Sqlhelper,主要用于在同一个连接中完成CRUD! 一.ADO.NET中的Connection详解: ...
- ado.net的简单数据库操作(二)之封装SqlHelperl类
今天我书接上回,接着昨天的ado.net的数据库操作的相关知识来讲哈! 从上篇文章给出的实例来看,你一定会发现,操作数据库其实还挺麻烦的,就连一个最简单的数据库操作语句都要包括 定义数据库连接字符串. ...
- SqlHelper 1.0
SqlHelper类,可以简化对数据库的操作. 将程序中需要经常用到的数据库操作,如:连接字符串.对数据的增.删.改.查封装成“SqlHelper”类中的静态属性,方便在程序各部分进行调用. 增(in ...
- 第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获得连接字符串
第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获 ...
- SqlHelper——数据库小助手
SqlHelper其实就是一个类. 早就听说过"SqlHelper"这个名词,也查过相关的资料,但还是一头雾水.当真的去实践去用它时,就会发现其实它没那么神秘. 当敲第一个窗体的时 ...
随机推荐
- 初学Android 二 创建项目以及目录结构
命令行创建 android create project Usage: android [global options] create project [action options] Global ...
- zendstudio 10下载汉化
1.文件和汉化文件 ZendStudio官方下载地址:http://www.geekso.com/component/zendstudio-downloads/ 百度云地址: 10.0.0.msi ...
- usr/bin/ld: cannot find 错误解决方法
参考:http://blog.siyebocai.cn/20100324_5p424qs7.html 通常在软件编译时出现的usr/bin/ld: cannot find -lxxx的错误,主要的原因 ...
- 开始学习web前端技术
不能再蹉跎了,不能再徘徊了,不能再犹豫了,犹豫徘徊等于白来…… 感觉之前浪费了太多的岁月,必须得学习一门实用的技术来充实自己空虚的心情了. 想来想去网页应该是万金油的,大大小小多多少少都得用到.既然如 ...
- Select模型原理
Select模型原理 利用select函数,推断套接字上是否存在数据,或者是否能向一个套接字写入数据.目的是防止应用程序在套接字处于锁定模式时,调用recv(或send)从没有数据的套接字上接收数据, ...
- Android通过http协议POST传输方式
Android通过http协议POST传输方式如下: 方式一:HttpPost(import org.apache.http.client.methods.HttpPost) 代码如下: privat ...
- iOS开发——Swift篇&文件,文件夹操作
文件,文件夹操作 ios开发经常会遇到读文件,写文件等,对文件和文件夹的操作,这时就可以使用NSFileManager,NSFileHandle等类来实现. 下面总结了各种常用的操作: 1,遍 ...
- JAVA(2)——JDBC
刚接触JDBC的时候,有时候就在想,为什么java要用JDBC,而不是直接使用之前在VB中就学习过的ODBC,由于ODBC是在JDBC之前出现,所以ODBC肯定由于无法完毕某些操作或者不能非常顺利的完 ...
- python 2.5源代码编绎
VS C++项目中,选择工程项名称,右菜单中选择--->仅适用于项目---->仅生成(项目) 1.make_buildinfo,make_versioninfo make_buildinf ...
- UNIX基础知识之用户标识
一.用户ID 口令文件(/etc/passwd)登录项中的用户ID(user ID)是个数值,它向系统标识各个不同的用户.系统管理员在确定一个用户的登录名的同时,确定其用户ID.用户不能更改其用户ID ...