DBHelper.cs是程序来连接数据的,也是一个程序必不可少的一个类(本人道行浅,目前这样认为)。由于一个程序基本写一次,容易忘记。所有写在这里备注

首先是引用

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

然后代码:

conn.Close();
conn.Dispose();
cmd.Dispose();
这几个为了防患于未然也加上去了

  public class DBHelper
{
private static readonly string strconnection = ConfigurationManager.ConnectionStrings["Conn"].ConnectionString;
private static SqlConnection conn = new SqlConnection(strconnection);
//创建给sqlreadr使用
public static SqlConnection GetConnection() { return conn; }
/// <summary>
/// 打开数据库链接
/// </summary>
public static void OpenSqlConnection()
{
if (GetConnection().State == ConnectionState.Closed) { DBHelper.GetConnection().Open(); }
}
/// <summary>
/// 关闭数据库链接
/// </summary>
public static void ClosSqlConnection()
{
if (GetConnection().State == ConnectionState.Open) { DBHelper.GetConnection().Close(); }
} /// <summary>
/// 基础ExecuteNonQuery 方法
/// </summary>
/// <param name="SQLString">执行的sql语句</param>
/// <param name="type">是否执行存储过程·</param>
/// <param name="prep">存储过程参数</param>
/// <returns></returns>
private static int ExecuteNonQuery(string SQLString, CommandType type, SqlParameter[] prep)
{
using (SqlConnection conn = new SqlConnection(strconnection))
{
using (SqlCommand cmd = new SqlCommand(SQLString, conn))
{
int r = ;
try
{
conn.Open();
cmd.CommandType = type;
if (prep != null && prep.Length > )
{
foreach (SqlParameter p in prep)
{
cmd.Parameters.Add(p);
}
}
r = cmd.ExecuteNonQuery();
}
catch (System.Data.SqlClient.SqlException ex) { throw new Exception(ex.Message); }
finally
{
conn.Close();
conn.Dispose();
cmd.Dispose();
}
return r;
}
} } /// <summary>
/// 基础datatable
/// </summary>
/// <param name="SQLString">执行的sql语句</param>
/// <param name="type">是否执行存储过程·</param>
/// <param name="prep">存储过程参数</param>
/// <returns></returns>
private static DataTable GetDataTable( string SQLString, CommandType type, SqlParameter[] prep)
{
using (SqlConnection conn = new SqlConnection(strconnection))
{
using (SqlCommand cmd = new SqlCommand(SQLString, conn))
{
SqlDataAdapter dap = null;
DataTable dt = null;
try
{
cmd.CommandType = type;
if (prep != null && prep.Length > )
{
foreach (SqlParameter p in prep)
{
cmd.Parameters.Add(p);
}
}
dap = new SqlDataAdapter(cmd);
dt = new DataTable();
dap.Fill(dt);
}
catch (Exception ex) { }
finally
{
conn.Close();
conn.Dispose();
cmd.Dispose();
}
return dt;
}
}
} /// <summary>
/// 基础SqlDataReader
/// </summary>
/// <param name="SQLString">执行的sql语句</param>
/// <param name="type">是否执行存储过程·</param>
/// <param name="prep">存储过程参数</param>
/// <returns></returns>
private static SqlDataReader GetList(string SQLString, CommandType type, SqlParameter[] prep)
{
SqlCommand cmd = null;
SqlDataReader dr = null;
cmd = new SqlCommand(SQLString, conn);
if (prep != null && prep.Length > )
{
cmd.Parameters.AddRange(prep);
}
cmd.CommandType = type;
try { dr = cmd.ExecuteReader(); }
catch (Exception ex) { }
return dr;
} //调用ExecuteNonQuery 方法
public static int ExecuteNonQuery(string SQLString, SqlParameter[] prep) {
return ExecuteNonQuery(SQLString, CommandType.StoredProcedure, prep);
}
public static int ExecuteNonQuery(string SQLString) {
return ExecuteNonQuery(SQLString, CommandType.Text, null);
}
//调用GetDataTable 方法
public static DataTable GetDataTable(string SQLString, SqlParameter[] prep) {
return GetDataTable(SQLString, CommandType.StoredProcedure, prep);
}
public static DataTable GetDataTable(string SQLString)
{
return GetDataTable(SQLString, CommandType.Text, null);
}
//调用SqlDataReader 调用此方法需要先打开conn 使用完毕之后关闭conn
public static SqlDataReader GetList(string SQLString, SqlParameter[] prep)
{
return GetList(SQLString, CommandType.StoredProcedure, prep);
}
public static SqlDataReader GetList(string SQLString)
{
return GetList(SQLString, CommandType.Text, null);
} }

.net DBHelper的更多相关文章

  1. 不该活着的SqlHelper和DBHelper

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

  2. 兼容SQLSERVER、Oracle、MYSQL、SQLITE的超级DBHelper

    本示例代码的关键是利用.net库自带的DbProviderFactory来生产数据库操作对象. 从下图中,可以看到其的多个核心方法,这些方法将在我们的超级DBHelper中使用. 仔细研究,你会发现每 ...

  3. C#/ASP.NET完善的DBHelper,配套Model生成器

    支持Oracle.MSSQL.MySQL.SQLite四种数据库,支持事务,支持对象关系映射:已在多个项目中实际使用. 没有语法糖,学习成本几乎为0,拿来即用. DBHelper类完整代码: usin ...

  4. C# DBHelper 第二版

    1. [代码][C#]代码     跳至 [1] [全屏预览] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...

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

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

  6. DbHelper为什么要用Using?

    我们分析一下DbHelper做什么事情,大家都知道它用于数据库的连接操作,这里的数据库连接会创建非托管资源,c#的垃圾回收机制不会对它处理,需要实现IDisposable接口手动释放.   手动释放的 ...

  7. NHibernate3快速上手教程FluentNHibernate配置与DBHelper

    很多学习NHibernate的新手很容易卡在配置文件这一关,正所谓万事开头难,上手后再配合官方文档就比较容易了. 网上关于配置文件的资料非常多,但由于版本的问题,许多老的教程中都没有明确指出类库的版本 ...

  8. 数据库助手类 DBHelper

    using System; using System.Collections.Generic; using System.Text; using System.Configuration; using ...

  9. 收集C#常用类:自己写的一个DBHelper类

    随着学的东西越来越多,一点点的完善吧! using System; using System.Collections.Generic; using System.Linq; using System. ...

  10. Ado.net中简单的DBHelper类(增删改查)

    private static string connString = "server=.;database=hotel;uid=aa;pwd=123";//最好从配置文件中取出 p ...

随机推荐

  1. Linux-3.0.8中基于S5PV210的IRQ模块代码追踪和分析

    init/main.c: asmlinkage void start_kernel(void) { ...... early_irq_init(); init_IRQ(); ...... } earl ...

  2. Exception.ToString()使用及其他方法比较

    在日常C#的编码过程中,我们常常会使用try...catch...来抓住代码异常,并且在异常的时候打印log, 如下 try { } catch (Exception e) { //输出Log信息等 ...

  3. sklearn导入模块问题:python ImportError: No module named datasets

    提示无法导入module 问题原因:将文件命名为sklearn.py. 解决方式:将文件命名为其他. 引用: [1] https://stackoverflow.com/questions/49635 ...

  4. 关于Android 8.0java.lang.SecurityException: Permission Denial错误的解决方法

    背景 当我在Android 7.0及以下手机运行启动页,进行Activity跳转的时候,完美跳转到对应的目标Activity. 但当在Android 8.0及以上手机进行Activity跳转时,会爆如 ...

  5. 背水一战 Windows 10 (110) - 通知(Tile): secondary tile 模板之基础, secondary tile 模板之文本

    [源码下载] 背水一战 Windows 10 (110) - 通知(Tile): secondary tile 模板之基础, secondary tile 模板之文本 作者:webabcd 介绍背水一 ...

  6. App设计:消息推送和界面路由跳转

    概要 app消息推送.显示通知栏,点击跳转页面是很一般的功能了,下面以个推为例演示push集成,消息处理模块及app内部路由模块的简单设计. 推送 推送sdk集成 集成sdk步骤根据文档一步步做就行了 ...

  7. FastDFS客户端与自定义文件存储系统

    <1>安装 安装提供给大家的fdfs_client-py-master.zip到虚拟环境中 pip install fdfs_client-py-master.zip pip instal ...

  8. JDK设计模式之—单例模式和static关键字

    首先了解static 关键字 static声明的方法是静态方法,static声明的成员变量为静态成员变量.对于该类的所有对象来说,static的成员变量和static只有一份存储空间 即使没有创建该类 ...

  9. jsp进阶

    Jsp,前段的数据读取到后端 获取前段输入框数据 request.getParameter(前段输入框的name值) Request.代表转发,(代码在服务器内部执行的一次性请求,url地址不会发生改 ...

  10. MySql事务的隔离级别及作用

    逻辑工作单元遵循一系列(ACID)规则则称为事务. 原子性:保证事务是一系列的运作,如果中间过程有一个不成功则全部回滚,全部成功则成功.保证了事务的原则性. 一致性:一致性指的是比如A向B转100块钱 ...