1.配置文件

   <connectionStrings>
<add name="constr" connectionString="Data Source=.;Initial Catalog=NovelDitle;Integrated Security=True"/>
</connectionStrings>

2.静态类 命名空间的引入等

这里我只写了主要要用到的命名空间

 using System.Configuration;
using System.Data;
using System.Data.SqlClient;

3.私有连接字符串 全局变量

//私有连接字符串
private static string conStr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;

4.写静态方法

这里的三个参数分别指的是:sql语句 存储过程 可变参数(防sql注入)

①//离线查询 返回datatable

     public static DataTable ExecuteDataTable(string sql,CommandType cmdType, params SqlParameter[] par)
{
//datatable对象
DataTable dt = new DataTable(); //用于处理非托管对象。某些类型的非托管对象有数量限制或很消耗系统资源。为了及时释放资源,使用using语句可以确保这些资源适当地处置(dispose)
using (SqlDataAdapter adapter = new SqlDataAdapter(sql, conStr))
{
//存储过程赋值
adapter.SelectCommand.CommandType = cmdType;
//判断参数不为空 长度>0
if (par != null)
{
//向数组参数中添加值
adapter.SelectCommand.Parameters.AddRange(par);
}
//填充数据
adapter.Fill(dt);
return dt;//返回值
}
}

②//在线查询,返回SqlDataReader

  public static SqlDataReader ExecuteDataReader(string sql,CommandType cmdType, params SqlParameter[] par)
{
//SqlConnection要始终保持打开状态 不能使用using释放资源
SqlConnection conn = new SqlConnection(conStr); using (SqlCommand com = new SqlCommand(sql, conn))
{
//存储过程赋值
com.CommandType = cmdType; //判断参数不为空
if (par != null)
{
//传入参数
com.Parameters.AddRange(par);
}
try
{
//如果连接状态关闭
if (conn.State==ConnectionState.Closed)
{
//打开连接
conn.Open();
}
//返回结果 参数:当关闭reader时也关闭SqlConnection
return com.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception)
{
//关闭连接
conn.Close();
//释放资源
conn.Dispose();
throw;//抛出异常
}
}
}

③增删改操作

  public static int ExecuteNonQuery(string sql,CommandType cmdType,params SqlParameter[] par)
{
using (SqlConnection conn = new SqlConnection(conStr))
{
using (SqlCommand com=new SqlCommand(sql,conn))
{
com.CommandType = cmdType; if (par!=null)
{
com.Parameters.AddRange(par);
}
conn.Open(); return com.ExecuteNonQuery();
}
}
}

④返回单个值

  public static object ExecuteScalar(string sql,CommandType cmdType,params SqlParameter[] par)
{
using (SqlConnection conn = new SqlConnection(conStr))
{
using (SqlCommand com = new SqlCommand(sql, conn))
{
com.CommandType = cmdType; if (par != null)
{
com.Parameters.AddRange(par);
}
conn.Open(); return com.ExecuteScalar();
}
}
}

ADO.NET sqlHelper类(DBHelper类)的更多相关文章

  1. 我也来写:数据库访问类DBHelper

    一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...

  2. 我也来写:数据库访问类DBHelper(转)

    一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...

  3. DBHelper 类(网上收集)

    这个是我网上找的,觉得不错的一个DBHelper类,下面是作者话: // 微软的企业库中有一个非常不错的数据操作类了.但是,不少公司(起码我遇到的几个...),对一些"封装"了些什 ...

  4. ADO.NET基础巩固-----连接类和非连接类

          最近的一段时间自己的状态还是不错的,早上,跑步,上自习看书,下午宿舍里面编程实战,晚上要么练习代码,要么去打球(在不打就没机会了),生活还是挺丰富的. 关于C#的基础回顾就先到前面哪里,这 ...

  5. Accesss数据库的DBhelper类(带分页)

    首先配置web.config,使配置文件连接access数据库: <connectionStrings> <add name="DBConnection" con ...

  6. C# -- 等待异步操作执行完成的方式 C# -- 使用委托 delegate 执行异步操作 JavaScript -- 原型:prototype的使用 DBHelper类连接数据库 MVC View中获取action、controller、area名称、参数

    C# -- 等待异步操作执行完成的方式 C# -- 等待异步操作执行完成的方式 1. 等待异步操作的完成,代码实现: class Program { static void Main(string[] ...

  7. c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)

    c#封装DBHelper类   public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> ...

  8. [C#]记录一次异常排查,关于using语法、sqlserver数据库session、DBHelper类

    最近在做一个基于asp.net和sqlserver的网站项目,发现网站运行一段时间之后,会报异常: 超时时间已到,但是尚未从池中获取连接.出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小 ...

  9. 分享一个简单的C#的通用DbHelper类(支持数据连接池)

    每次新项目的时候,都要从头去找一遍数据库工具类.这里分享一个简单实用的C#的通用DbHelper工具类,支持数据连接池. 连接池配置 <connectionStrings> <add ...

  10. 不该活着的SqlHelper和DBHelper

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

随机推荐

  1. 嘴巴题1 LA2531 足球联赛

    LA2531 足球联赛 题目: 有n只队伍打比赛,给出每只队目前获胜和失败的场数,再给出两两队伍接下来的比赛场次,问你哪些队伍可能的冠军 (题面摘自http://blog.csdn.net/s_h_r ...

  2. 一个网页登陆界面写30多个测试Case——测试之道

    转自博文:http://www.cnblogs.com/I-am-Betty/p/3566411.html 具体需求: 有一个登陆页面, (假如上面有2个textbox, 一个提交按钮. 请针对这个页 ...

  3. 【python之路面向对象】初级篇

    概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向过程编程最易被初学 ...

  4. Django项目:CRM(客户关系管理系统)--31--23PerfectCRM实现King_admin数据删除

    登陆密码设置参考 http://www.cnblogs.com/ujq3/p/8553784.html # king_urls.py # ————————02PerfectCRM创建ADMIN页面—— ...

  5. localStorage对象简单应用 - - 访问次数

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. description The request sent by the client was syntactically incorrect.

    shi用url传递参数,其他页面都ojbk的 唯独有一个请求 不应该啊 这明显的已经配置好了啊 因为别的请求我也是这样配置的啊,运行是没问题的啊 运行好好的啊 一时间,感觉无从下手了 经过十几分钟各种 ...

  7. @at-root和#{&}结合

    Sass有脚本模式#{},他和&不同之处是,&只用作选择器,它只能出现在一个复合的开始选择器,类似于一个类型选择器,如a或者h1.但#{}他表示的是一个插值,它可以用在任何地方.同样的 ...

  8. 基础篇-1.5Java的数组

    1 引言 每一种编程语言都有其自身的数组概念,大同小异,都是为了存储一堆数据,而Java的数组是用来存储相同类型的数据,如声明一个arr[10]数组,可以用来代替声明10个变量. 2 声明和创建数组 ...

  9. CSS制作的32种图形效果[梯形|三角|椭圆|平行四边形|菱形|四分之一圆|旗帜]

    转载链接:http://www.w3cplus.com/css/css-simple-shapes-cheat-sheet 前面在<纯CSS制作的图形效果>一文中介绍了十六种CSS画各种不 ...

  10. Javascript-正则表达式常用验证

    <div> <h1>一.判断中国邮政编码匹配</h1> <p>分析:中国邮政编码都是6位,且为纯数字</p> <div>邮政编码 ...