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. Linux命令CURL用法

    Curl是一个命令行方式下传输数据的开源传输工具,支持多种协议包括:FTP,HTTP,HTTPS,IMAP,POP3,TELNET等.同样支持HTTP POST方法,PUT方法,FTP上传,cooki ...

  2. 一次.NET项目反编译的实战经验(WinForm)

    最近由于业务需求,需要对一个老项目进行功能调整.但是项目的源代码已经找不到了.所以只能尝试对项目行进反编译. 一.反编译工具的选择 提到.NET的反编译,第一个想到的就是大名鼎鼎的Reflector. ...

  3. 【python之路26】字符串之格式化%和format

    Python基础之杂货铺   字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式, ...

  4. bzoj 2662 [BeiJing wc2012]冻结——分层图

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2662 这种的都是分层图. #include<iostream> #include ...

  5. beego 入门 - 常见错误

    参考网址:http://beego.me/quickstart 按照官网教程,执行命令 $ go get github.com/astaxie/beego $ go get github.com/be ...

  6. JS---案例:无刷新评论---属于创建对象的案例拿出来复习

    案例:无刷新评论---属于创建对象的案例拿出来复习 创建行和单元格,添加到相应元素中,设置内容 createElement, appendChild,innerHTML <!DOCTYPE ht ...

  7. 通过button将form表单的数据提交到action层

    form表单中不需要写action的路径,需要给form表单一个唯一的id,将你要提交的信息的表单中的标签name="action中的javabean对象.javabean属性". ...

  8. DjangoORM查询、分页、ckeditor

    查询数据 Django的批量查询(查询所有,或者条件查询)返回的是queryset对象. Queryset对象是一个惰性对象,在不执行 1.排序 2.循环 3.截取 操作的情况下,不会遍历序列的内容. ...

  9. [jnhs]netbeans使用debug模式频繁出现java.lang.OutOfMemoryError: PermGen space内存不足

    netbeans赠送的tomcat7 windows解决方法: 修改C:\Program Files\Apache Software Foundation\Apache Tomcat 8.0.27\b ...

  10. Django项目:CRM(客户关系管理系统)--08--03PerfectCRM创建基本数据03

    如果感觉本章博客对您有帮助,请尽情打赏吧!