C#.NET数据库访问类DBHelper
这是一个与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的更多相关文章
- 我也来写:数据库访问类DBHelper
一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...
- 我也来写:数据库访问类DBHelper(转)
一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...
- DataAccess通用数据库访问类,简单易用,功能强悍
以下是我编写的DataAccess通用数据库访问类,简单易用,支持:内联式创建多个参数.支持多事务提交.支持参数复用.支持更换数据库类型,希望能帮到大家,若需支持查出来后转换成实体,可以自行扩展dat ...
- 一个通用数据库访问类(C#,SqlClient)
本文转自:http://www.7139.com/jsxy/cxsj/c/200607/114291.html使用ADO.NET时,每次数据库操作都要设置connection属性.建立connecti ...
- 关于PHP建立数据库访问类的封装以及操作php单例模式连接数据库封装类
建立数据库访问类的封装 <?php class DBDA { public $host = "localhost"; //服务器地址 public $ui ...
- 学习实践:使用模式,原则实现一个C++数据库访问类
一.概述 在我参与的多个项目中,大家使用libMySQL操作MySQL数据库,而且是源码即复用,在多个项目中有多套相同或相似的源码,这样的复用方式给开发带来了不变,而且libMySQL的使用比较麻烦, ...
- 一个C#的XML数据库访问类
原文地址:http://hankjin.blog.163.com/blog/static/33731937200942915452244/ 程序中不可避免的要用到配置文件或数据,对于数据量比较小的程序 ...
- 通用数据库帮助类DBHelper(含log日志信息实时记录)
项目需要,需要一个通用的数据库操作类,增删改查.事务.存储过程.日志记录都要有,于是在已有的帮助类上做了一些改进,并将log4j的.NET版--log4net嵌入其中记录sql的执行环境和状态. 用起 ...
- Java知多少(107)几个重要的java数据库访问类和接口
编写访问数据库的Java程序还需要几个重要的类和接口. DriverManager类 DriverManager类处理驱动程序的加载和建立新数据库连接.DriverManager是java.sql包中 ...
随机推荐
- Android 进程保活招式大全
目前市面上的应用,貌似除了微信和手Q都会比较担心被用户或者系统(厂商)杀死问题.本文对 Android 进程拉活进行一个总结. Android 进程拉活包括两个层面: A. 提供进程优先级,降低进程被 ...
- R语言学习笔记:列表
R列表时以其他对象为成分的有序集合,列表的成分和向量不同,它们不一定是同一种数据类型,模式或者长度.例: > my.list<-list(stud.id=34453, + stud.nam ...
- jquery的smartWizard插件使用方法
jquery 的smartWizard插件常用在一些向导式的,按步骤的功能中,是的用户按照我们设定的步骤进行操作,这样一方面有较好的用户体验,可以将庞大的表格 数据分解成多个步骤,是的每个步骤的数据量 ...
- Error Code: 1175
用mysql workbench 更新一个表的时候报如下异常: Error Code: 1175. To disable safe mode, toggle the option in Prefere ...
- 更新Windows ActiveX,Ios
两天内连续更新Windows ActiveX,和IOS两个平台. Windows ActiveX更新主要是添加加密流在线播放支持. IOS是优化渲染视频. Windows ActiveX 相关地址:h ...
- linux mount 命令详解
命令格式: mount [-t vfstype] [-o options] device dir 其中: 1.-t vfstype 指定文件系统的类型,通常不必指定.mount 会自动选择正确的类型. ...
- 8.11-8.16:usaco
summary:57 bzoj1741:裸二分图最大匹配 #include<cstdio> #include<cstring> #include<iostream> ...
- BZOJ3509: [CodeChef] COUNTARI
3509: [CodeChef] COUNTARI Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 339 Solved: 85[Submit][St ...
- Bad Request (Invalid Hostname)解决方法
当在Windows Server 2003+IIS6做Web服务器,出现打开如http://paullevi.oicp.net,出现,Bad Request (Invalid Hostname) 的提 ...
- sockaddr和sockaddr_in的区别(转载)
原文链接:http://kenby.iteye.com/blog/1149001 struct sockaddr和struct sockaddr_in这两个结构体用来处理网络通信的地址. 在各种系统调 ...