using System;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.OleDb;
using System.Data.SqlClient; namespace JADAY.Frame.DbHelper
{
/// <summary>
/// 数据库助手类
/// </summary>
public class DbUtility
{
private static string dbProviderName = ConfigurationSettings.AppSettings["DbProviderName"];
private static string dbConnectionString = ConfigurationManager.AppSettings["TaxInvoiceConn"]; private DbConnection connection; public DbUtility()
{
this.connection = CreateConnection(DbUtility.dbConnectionString);
} public DbUtility(string connectionString)
{
this.connection = CreateConnection(connectionString);
} public static DbConnection CreateConnection()
{
DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DbUtility.dbProviderName);
DbConnection dbconn = dbfactory.CreateConnection();
dbconn.ConnectionString = DbUtility.dbConnectionString;
return dbconn;
} public static DbConnection CreateConnection(string connectionString)
{
DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DbUtility.dbProviderName);
DbConnection dbconn = dbfactory.CreateConnection();
dbconn.ConnectionString = connectionString;
return dbconn;
} public DbCommand GetStoredProcCommond(string storedProcedure)
{
DbCommand dbCommand = connection.CreateCommand();
dbCommand.CommandText = storedProcedure;
dbCommand.CommandType = CommandType.StoredProcedure;
return dbCommand;
} public DbCommand GetSqlStringCommond(string sqlQuery)
{
DbCommand dbCommand = connection.CreateCommand();
dbCommand.CommandText = sqlQuery;
dbCommand.CommandType = CommandType.Text;
return dbCommand;
} #region 增加参数 public void AddParameterCollection(DbCommand cmd, DbParameterCollection dbParameterCollection)
{
foreach (DbParameter dbParameter in dbParameterCollection)
{
cmd.Parameters.Add(dbParameter);
}
} 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);
} 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(DbUtility.dbProviderName);
DbDataAdapter dbDataAdapter = dbfactory.CreateDataAdapter();
dbDataAdapter.SelectCommand = cmd;
DataSet ds = new DataSet();
dbDataAdapter.Fill(ds);
return ds;
} public DataTable ExecuteDataTable(DbCommand cmd)
{
DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DbUtility.dbProviderName);
DbDataAdapter dbDataAdapter = dbfactory.CreateDataAdapter();
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);
return reader;
} public int ExecuteNonQuery(DbCommand cmd)
{
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;
} #endregion #region 执行事务 public DataSet ExecuteDataSet(DbCommand cmd, Trans t)
{
cmd.Connection = t.DbConnection;
cmd.Transaction = t.DbTrans;
DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DbUtility.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(DbUtility.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)
{
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 = DbUtility.CreateConnection();
conn.Open();
dbTrans = conn.BeginTransaction();
} public Trans(string connectionString)
{
conn = DbUtility.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();
}
}
}
}

2、直接执行sql语句


  1. DbHelper db = new DbHelper();
  2. DbCommand cmd = db.GetSqlStringCommond("insert t1 (id)values(‘?haha‘?)");
  3. db.ExecuteNonQuery(cmd);

3、执行存储过程


  1. DbHelper db = new DbHelper();
  2. DbCommand cmd = db.GetStoredProcCommond("t1_insert");
  3. db.AddInParameter(cmd, "@id", DbType.String, "heihei");
  4. db.ExecuteNonQuery(cmd);

4、返回DataSet


  1. DbHelper db = new DbHelper();
  2. DbCommand cmd = db.GetSqlStringCommond("select * from t1");
  3. DataSet ds = db.ExecuteDataSet(cmd);

5、返回DataTable


  1. DbHelper db = new DbHelper();
  2. DbCommand cmd = db.GetSqlStringCommond("t1_findall");
  3. DataTable dt = db.ExecuteDataTable(cmd);


6、输入参数/输出参数/返回值的使用(比较重要哦)


  1. DbHelper db = new DbHelper();
  2. DbCommand cmd = db.GetStoredProcCommond("t2_insert");
  3. db.AddInParameter(cmd, "@timeticks", DbType.Int64, DateTime.Now.Ticks);
  4. db.AddOutParameter(cmd, "@outString", DbType.String, 20);
  5. db.AddReturnParameter(cmd, "@returnValue", DbType.Int32);
  6. db.ExecuteNonQuery(cmd);
  7. string s = db.GetParameter(cmd, "@outString").Value as string;
  8. int r = Convert.ToInt32(db.GetParameter(cmd, "@returnValue").Value);


7、DataReader使用



  1. DbHelper db = new DbHelper();
  2. DbCommand cmd = db.GetStoredProcCommond("t2_insert");
  3. db.AddInParameter(cmd, "@timeticks", DbType.Int64, DateTime.Now.Ticks);
  4. db.AddOutParameter(cmd, "@outString", DbType.String, 20);
  5. db.AddReturnParameter(cmd, "@returnValue", DbType.Int32);
  6. using (DbDataReader reader = db.ExecuteReader(cmd))
  7. {
  8. dt.Load(reader);
  9. }
  10. string s = db.GetParameter(cmd, "@outString").Value as string;
  11. int r = Convert.ToInt32(db.GetParameter(cmd, "@returnValue").Value);


8、事务的使用.(项目中需要将基本的数据库操作组合成一个完整的业务流时,代码级的事务是必不可少的哦)


以上我们好像没有指定数据库连接字符串,大家如果看下DbHelper的代码,就知道要使用它必须在config中配置两个参数,如下:


  1. pubic void DoBusiness()
  2. {
  3. using (Trans t = new Trans())
  4. {
  5. try
  6. {
  7. D1(t);
  8. throw new Exception();
  9. D2(t);
  10. t.Commit();
  11. }
  12. catch
  13. {
  14. t.RollBack();
  15. }
  16. }
  17. }
  18. public void D1(Trans t)
  19. {
  20. DbHelper db = new DbHelper();
  21. DbCommand cmd = db.GetStoredProcCommond("table_insert");
  22. db.AddInParameter(cmd, "@timeticks", DbType.Int64, DateTime.Now.Ticks);
  23. db.AddOutParameter(cmd, "@outString", DbType.String, 20);
  24. db.AddReturnParameter(cmd, "@returnValue", DbType.Int32);
  25. if (t == null) db.ExecuteNonQuery(cmd);
  26. else db.ExecuteNonQuery(cmd,t);
  27. string s = db.GetParameter(cmd, "@outString").Value as string;
  28. int r = Convert.ToInt32(db.GetParameter(cmd, "@returnValue").Value);
  29. }
  30. public void D2(Trans t)
  31. {
  32. DbHelper db = new DbHelper();
  33. DbCommand cmd = db.GetSqlStringCommond("insert table (id)values(@id)");
  34. if (t == null) db.ExecuteNonQuery(cmd);
  35. else db.ExecuteNonQuery(cmd, t);
  36. }
 

微软DbHelper的更多相关文章

  1. 数据访问层DAL(数据库访问抽象类DataProvider)

    晒晒数据访问层DAL,看看你的项目数据访问层使用的是什么形式,数据访问性能比较 采用什么样的数据访问形式是软件编码很重要的一个环节,良好的数据访问形式不仅能够提搞代码的执行效率,协作能力,更重要的是对 ...

  2. 不该活着的SqlHelper和DBHelper

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

  3. 我的DbHelper数据操作类

    其实,微软的企业库中有一个非常不错的数据操作类了.但是,不少公司(起码我遇到的几个...),对一些"封装"了些什么的东西不太敢用,虽然我推荐过微软的企业库框架了...但是还是要&q ...

  4. DbHelper数据操作类

    摘要:本文介绍一下DbHelper数据操作类 微软的企业库中有一个非常不错的数据操作类.但是,不少公司(起码我遇到的几个...),对一些"封装"了些什么的东西不太敢用,虽然我推荐过 ...

  5. DBHelper 类(网上收集)

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

  6. 我的DbHelper数据操作类(转)

    其实,微软的企业库中有一个非常不错的数据操作类了.但是,不少公司(起码我遇到的几个...),对一些"封装"了些什么的东西不太敢用,虽然我推荐过微软的企业库框架了...但是还是要&q ...

  7. 静态工厂 + DbHelper

    在 .NET 的学习过程中用过三种数据库:Sql Server.Access.SQLite.Sql Server 用得相对多一点点,但是,麻烦,每次用它都需要开服务,而且还费资源,更麻烦的是拷贝到一台 ...

  8. MVC ---- DBHelper.ttinclude

    在通过T4模版引擎之基础入门 对T4有了初步印象后,我们开始实战篇.T4模板引擎可以当做一个代码生成器,代码生成器的职责当然是用来生成代码(这不是废话吗).而这其中我们使用的最普遍的是根据数据库生成实 ...

  9. 微软企业库5.0 学习之路——第二步、使用VS2010+Data Access模块建立多数据库项目

    现在我就开始进入学习之路的第二步——Data Access模块,这个模块是企业库中被使用频率最高的模块,它很好的封装了数据库操作应用,为我们进行多数据库系统开发提供了便利,只需更改配置文件就 可以很快 ...

随机推荐

  1. Lintcode: Maximum Subarray II

    Given an array of integers, find two non-overlapping subarrays which have the largest sum. The numbe ...

  2. [reprint]useful linux commands

    linux一说都是搞开发玩的,敲敲键盘就能完成所有的工作.其实你也可以这么玩,玩游戏的除外哦. 那我们就来侃侃如何玩,linux是命令的天下,高级的命令那是相当的多,但是我们正真用到的也就那么几个看你 ...

  3. 数据库SQL 多态

    Sealed关键字:密封类 该类无法被继承 部分类: Namespace 命名空间 虚拟文件夹 Partial关键字 可以将一个类拆分成多个部分,分别放在多个文件里 多态: 1.编译多态 函数重载 2 ...

  4. c# 获取路径的几种方法

    1.取得控制台应用程序的根目录方法 方法1.Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径方法2.AppDomain.CurrentDomain.Bas ...

  5. oracle数据库的归档模式

    1:开发环境和测试环境中,数据库的日志模式和自动归档模式一般都是不设置的,这样有利于系统应用的调整,也免的生成大量的归档日志文件将磁盘空间大量的消耗. 2:生产环境时,将其设置为日志模式并自动归档就相 ...

  6. LDA-math-认识Beta/Dirichlet分布

    http://cos.name/2013/01/lda-math-beta-dirichlet/#more-6953 2. 认识Beta/Dirichlet分布2.1 魔鬼的游戏—认识Beta 分布 ...

  7. zw版【转发·台湾nvp系列Delphi例程】HALCON SetLineStyle1

    zw版[转发·台湾nvp系列Delphi例程]HALCON SetLineStyle1 procedure TForm1.Button1Click(Sender: TObject);var img : ...

  8. SQL Server 数据查询 整理

    一.使用SELECT检索数据 数据查询是SQL语言的中心内容,SELECT 语句的作用是让数据库服务器根据客户要求检索出所需要的信息资料,并按照规定的格式进行整理,返回给客户端. SELECT 语句的 ...

  9. 161109、windows下查看端口占用情况

    1.开始---->运行---->cmd,或者是window+R组合键,调出命令窗口 2.输入命令:netstat -ano,列出所有端口的情况.在列表中我们观察被占用的端口,比如是4915 ...

  10. 160927、用jquery 重置表单的方法

    清空 我们项目小小部分的搜索条件: 客户要做的是,只要一键 "清空搜索条件" 即可清空维护地点.订单ID等条件. js函数 //重置表单 function resetform(){ ...