这是一个与C# .NET通用的数据库访问类,包含了工厂模式、事务处理等安全机制。

调用方式:

DBHelper db = new DBHelper();

DbCommand cmd = db.GetSqlStringCommond(sql);

return (int)db.ExecuteScalar(cmd, parameters);

SqlParameter[] parameters = { new SqlParameter("@TMember_Id", model.TMember_Id), new SqlParameter("@TMember_UserName", model.TMember_UserName), new SqlParameter("@TMember_PassWord", model.TMember_PassWord) };

DBHelper db = new DBHelper();

DbCommand cmd = db.GetStoredProcCommond("TMember_Register");

db.ExecuteNonQuery(cmd, parameters);

Codeusing System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Data.Common; namespace DAL
{
public class DBHelper
{
/// <summary>
/// 获取数据库引用类库类型
/// </summary>
private static string dbProviderName = "System.Data.SqlClient";
/// <summary>
/// 获取数据库驱动
/// </summary>
private static string dbConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; private DbConnection connection; /// <summary>
/// 构造函数,创建数据库连接
/// </summary>
public DBHelper()
{
this.connection = CreateConnection(DBHelper.dbConnectionString);
} /// <summary>
/// 构造函数重载,创建数据库连接
/// </summary>
/// <param name="connectionString">数据库驱动</param>
public DBHelper(string connectionString)
{
this.connection = CreateConnection(connectionString);
} /// <summary>
/// 构造函数调用,通过工厂创建数据库连接
/// </summary>
/// <returns></returns>
public static DbConnection CreateConnection()
{
DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DBHelper.dbProviderName);
DbConnection dbconn = dbfactory.CreateConnection();
dbconn.ConnectionString = DBHelper.dbConnectionString;
return dbconn;
} /// <summary>
/// 构造函数重载调用,通过工厂创建数据库连接
/// </summary>
/// <param name="connectionString">数据库驱动</param>
/// <returns></returns>
public static DbConnection CreateConnection(string connectionString)
{
DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DBHelper.dbProviderName);
DbConnection dbconn = dbfactory.CreateConnection();
dbconn.ConnectionString = connectionString;
return dbconn;
} /// <summary>
/// 设置数据库操作源为存储过程
/// </summary>
/// <param name="storedProcedure"></param>
/// <returns></returns>
public DbCommand GetStoredProcCommond(string storedProcedure)
{
DbCommand dbCommand = connection.CreateCommand();
dbCommand.CommandText = storedProcedure;
dbCommand.CommandType = CommandType.StoredProcedure;
return dbCommand;
} /// <summary>
/// 设置数据库操作源为SQL语句
/// </summary>
/// <param name="sqlQuery"></param>
/// <returns></returns>
public DbCommand GetSqlStringCommond(string sqlQuery)
{
DbCommand dbCommand = connection.CreateCommand();
dbCommand.CommandText = sqlQuery;
dbCommand.CommandType = CommandType.Text;
return dbCommand;
} #region 增加参数
/// <summary>
/// 添加参考集合DbParameterCollection
/// </summary>
/// <param name="cmd">DbCommand</param>
/// <param name="dbParameterCollection">DbParameterCollection</param>
public void AddParameterCollection(DbCommand cmd, DbParameterCollection dbParameterCollection)
{
foreach (DbParameter dbParameter in dbParameterCollection)
{
cmd.Parameters.Add(dbParameter);
}
} public void AddSqlParenterCollection(DbCommand cmd, SqlParameter param)
{
cmd.Parameters.Add(param);
} public void AddOutParameter(DbCommand cmd, string parameterName, DbType dbType, int size)
{
DbParameter dbParameter = cmd.CreateParameter();
dbParameter.DbType = dbType;
dbParameter.ParameterName = parameterName;
dbParameter.Size = size;
dbParameter.Direction = ParameterDirection.Output;
cmd.Parameters.Add(dbParameter);
} public void AddInParameter(DbCommand cmd, string parameterName, DbType dbType, object value)
{
DbParameter dbParameter = cmd.CreateParameter();
dbParameter.DbType = dbType;
dbParameter.ParameterName = parameterName;
dbParameter.Value = value;
dbParameter.Direction = ParameterDirection.Input;
cmd.Parameters.Add(dbParameter);
} /// <summary>
/// 设置输入存储过程参数集合
/// </summary>
/// <param name="cmd"></param>
/// <param name="values"></param>
public void AddInParameter(DbCommand cmd, params SqlParameter[] values)
{
DbParameter dbParameter = cmd.CreateParameter();
dbParameter.Direction = ParameterDirection.Input;
cmd.Parameters.AddRange(values);
} public void AddReturnParameter(DbCommand cmd, string parameterName, DbType dbType)
{
DbParameter dbParameter = cmd.CreateParameter();
dbParameter.DbType = dbType;
dbParameter.ParameterName = parameterName;
dbParameter.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(dbParameter);
} public DbParameter GetParameter(DbCommand cmd, string parameterName)
{
return cmd.Parameters[parameterName];
}
#endregion #region 执行 public DataSet ExecuteDataSet(DbCommand cmd)
{
DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DBHelper.dbProviderName);
DbDataAdapter dbDataAdapter = dbfactory.CreateDataAdapter();
dbDataAdapter.SelectCommand = cmd;
DataSet ds = new DataSet();
dbDataAdapter.Fill(ds);
return ds;
} public DataSet ExecuteDataSet(DbCommand cmd, params SqlParameter[] param)
{
DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DBHelper.dbProviderName);
DbDataAdapter dbDataAdapter = dbfactory.CreateDataAdapter();
AddInParameter(cmd, param);
dbDataAdapter.SelectCommand = cmd;
DataSet ds = new DataSet();
dbDataAdapter.Fill(ds);
return ds;
} public DataTable ExecuteDataTable(DbCommand cmd)
{
DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DBHelper.dbProviderName);
DbDataAdapter dbDataAdapter = dbfactory.CreateDataAdapter();
dbDataAdapter.SelectCommand = cmd;
DataTable dataTable = new DataTable();
dbDataAdapter.Fill(dataTable);
return dataTable;
} public DataTable ExecuteDataTable(DbCommand cmd, params SqlParameter[] param)
{
DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DBHelper.dbProviderName);
DbDataAdapter dbDataAdapter = dbfactory.CreateDataAdapter();
AddInParameter(cmd, param);
dbDataAdapter.SelectCommand = cmd;
DataTable dataTable = new DataTable();
dbDataAdapter.Fill(dataTable);
return dataTable;
} public DbDataReader ExecuteReader(DbCommand cmd)
{
cmd.Connection.Open();
DbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
reader.Close();
return reader;
} public DbDataReader ExecuteReader(DbCommand cmd, params SqlParameter[] param)
{
AddInParameter(cmd, param);
cmd.Connection.Open();
DbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
reader.Close();
return reader;
} public int ExecuteNonQuery(DbCommand cmd)
{
cmd.Connection.Open();
int ret = cmd.ExecuteNonQuery();
cmd.Connection.Close();
return ret;
} /// <summary>
/// 事务处理T-SQL
/// </summary>
/// <param name="cmd"></param>
/// <param name="param"></param>
/// <returns></returns>
public int ExecuteNonQuery(DbCommand cmd, params SqlParameter[] param)
{
AddInParameter(cmd, param);
cmd.Connection.Open();
int ret = cmd.ExecuteNonQuery();
cmd.Connection.Close();
return ret;
} public object ExecuteScalar(DbCommand cmd)
{
cmd.Connection.Open();
object ret = cmd.ExecuteScalar();
cmd.Connection.Close();
return ret;
} public object ExecuteScalar(DbCommand cmd, params SqlParameter[] param)
{
AddInParameter(cmd, param);
cmd.Connection.Open();
object ret = cmd.ExecuteScalar();
cmd.Connection.Close();
return ret;
} #endregion #region 执行事务 public DataSet ExecuteDataSet(DbCommand cmd, Trans t)
{
cmd.Connection = t.DbConnection;
cmd.Transaction = t.DbTrans;
DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DBHelper.dbProviderName);
DbDataAdapter dbDataAdapter = dbfactory.CreateDataAdapter();
dbDataAdapter.SelectCommand = cmd;
DataSet ds = new DataSet();
dbDataAdapter.Fill(ds);
return ds;
} public DataTable ExecuteDataTable(DbCommand cmd, Trans t)
{
cmd.Connection = t.DbConnection;
cmd.Transaction = t.DbTrans;
DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DBHelper.dbProviderName);
DbDataAdapter dbDataAdapter = dbfactory.CreateDataAdapter();
dbDataAdapter.SelectCommand = cmd;
DataTable dataTable = new DataTable();
dbDataAdapter.Fill(dataTable);
return dataTable;
} public DbDataReader ExecuteReader(DbCommand cmd, Trans t)
{
cmd.Connection.Close();
cmd.Connection = t.DbConnection;
cmd.Transaction = t.DbTrans;
DbDataReader reader = cmd.ExecuteReader();
DataTable dt = new DataTable();
return reader;
} public int ExecuteNonQuery(DbCommand cmd, Trans t, params SqlParameter[] param)
{
AddInParameter(cmd, param);
cmd.Connection.Close();
cmd.Connection = t.DbConnection;
cmd.Transaction = t.DbTrans;
int ret = cmd.ExecuteNonQuery();
return ret;
} public object ExecuteScalar(DbCommand cmd, Trans t)
{
cmd.Connection.Close();
cmd.Connection = t.DbConnection;
cmd.Transaction = t.DbTrans;
object ret = cmd.ExecuteScalar();
return ret;
} #endregion
} public class Trans : IDisposable
{ private DbConnection conn; private DbTransaction dbTrans; public DbConnection DbConnection
{ get { return this.conn; } } public DbTransaction DbTrans
{ get { return this.dbTrans; } } public Trans()
{
conn.Open();
dbTrans = conn.BeginTransaction();
} public Trans(string connectionString)
{ conn = DBHelper.CreateConnection(connectionString); conn.Open(); dbTrans = conn.BeginTransaction(); } public void Commit()
{ dbTrans.Commit(); this.Colse(); } public void RollBack()
{ dbTrans.Rollback(); this.Colse(); } public void Dispose()
{ this.Colse(); } public void Colse()
{ if (conn.State == System.Data.ConnectionState.Open)
{ conn.Close(); } }
}
}

C#.NET数据库访问类DBHelper的更多相关文章

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

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

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

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

  3. DataAccess通用数据库访问类,简单易用,功能强悍

    以下是我编写的DataAccess通用数据库访问类,简单易用,支持:内联式创建多个参数.支持多事务提交.支持参数复用.支持更换数据库类型,希望能帮到大家,若需支持查出来后转换成实体,可以自行扩展dat ...

  4. 一个通用数据库访问类(C#,SqlClient)

    本文转自:http://www.7139.com/jsxy/cxsj/c/200607/114291.html使用ADO.NET时,每次数据库操作都要设置connection属性.建立connecti ...

  5. 关于PHP建立数据库访问类的封装以及操作php单例模式连接数据库封装类

    建立数据库访问类的封装 <?php   class DBDA {     public $host = "localhost"; //服务器地址     public $ui ...

  6. 学习实践:使用模式,原则实现一个C++数据库访问类

    一.概述 在我参与的多个项目中,大家使用libMySQL操作MySQL数据库,而且是源码即复用,在多个项目中有多套相同或相似的源码,这样的复用方式给开发带来了不变,而且libMySQL的使用比较麻烦, ...

  7. 一个C#的XML数据库访问类

    原文地址:http://hankjin.blog.163.com/blog/static/33731937200942915452244/ 程序中不可避免的要用到配置文件或数据,对于数据量比较小的程序 ...

  8. 通用数据库帮助类DBHelper(含log日志信息实时记录)

    项目需要,需要一个通用的数据库操作类,增删改查.事务.存储过程.日志记录都要有,于是在已有的帮助类上做了一些改进,并将log4j的.NET版--log4net嵌入其中记录sql的执行环境和状态. 用起 ...

  9. Java知多少(107)几个重要的java数据库访问类和接口

    编写访问数据库的Java程序还需要几个重要的类和接口. DriverManager类 DriverManager类处理驱动程序的加载和建立新数据库连接.DriverManager是java.sql包中 ...

随机推荐

  1. 初识MyBatis

    ORM:对象关系映射,它只是一种规则. 像MyBatis,Hibernate对jdbc进行了封装. 第一章 回顾JDBC开发 1.优点:简单易学,上手快,非常灵活构建SQL(自己写的),效率高.2.缺 ...

  2. 转:Build Your First JavaScript Library

    http://net.tutsplus.com/tutorials/javascript-ajax/build-your-first-javascript-library/ Step 1: Creat ...

  3. No bean named 'transactionManager' is defined

    2016-10-20 23:27:17.771 INFO 7096 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped &quo ...

  4. world符号大全

    ■特殊符号:·⊙①⊕◎Θ⊙●○¤㊣㈱@の■□★☆◆◇◣◢ ◤◥▲△▼▽⊿◢ ▂ ▃ ▄ ▅ ▆ ▇ █ ▉ ▊▋▌▍▎▏■ ▓ 回 □ 〓≡↑↓→←↘↙♀♂┇┅|$ @ * & # ※ 卍 卐 ...

  5. Annotation【转】

    1.Annotation的工作原理: JDK5.0中提供了注解的功能,允许开发者定义和使用自己的注解类型.该功能由一个定义注解类型的语法和描述一个注解声明的语法,读取注解的API,一个使用注解修饰的c ...

  6. php.ini – 配置文件详解

    详见: https://my.oschina.net/miaowang/blog/299546 这个文件必须命名为''php.ini''并放置在httpd.conf中的PHPIniDir指令指定的目录 ...

  7. C语言字符串查找函数

    #include <string.h> #include <stdio.h> char * string_search(char long_str[], char short_ ...

  8. python中的commands模块

    commands模块用于调用shell命令 有3中方法: commands.getstatus()   返回执行状态 commands.getoutput()   返回执行结果 commands.ge ...

  9. 百度地图API的调用

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...

  10. 剑指Offer:找出数组中出现次数超过一半的元素

    题目:找出数组中出现次数超过一半的元素 解法:每次删除数组中两个不同的元素,删除后,要查找的那个元素的个数仍然超过删除后的元素总数的一半 #include <stdio.h> int ha ...