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. Python学习总结14:时间模块datetime & time & calendar (一)

    Python中的常用于处理时间主要有3个模块datetime模块.time模块和calendar模块. 一.time模块 1. 在Python中表示时间的方式 1)时间戳(timestamp):通常来 ...

  2. 数据库SQL CRUD

    1.删除表 drop  table +表名 2.修改表 alter  table+表名+ add(添加)+列名+ int(类型) alter  table+表名+ drop(删除)+column(列) ...

  3. oracle 复杂语句

    select nvl(sum1,'0')as sum1,nvl(sum2,'0') as sum2,da2 from( select count(*) as sum1,substr(APPLY_DAT ...

  4. C++之路进阶——codevs2366(朋友圈)

    2366 朋友圈 2012年省队选拔赛河北  时间限制: 10 s  空间限制: 256000 KB  题目等级 : 大师 Master     题目描述 Description 在很久很久以前,曾经 ...

  5. 自建目录中jsp页面访问servlet路径出错404

    ---恢复内容开始--- 自建目录中jsp页面访问servlet路径出错404 使用eclipse建立的项目,总是会遇到路径问题,比如jsp页面访问servlet,jsp在默认的路径.jsp在自建目录 ...

  6. Maven打jar包

    <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactI ...

  7. Script to compile invalid objects in DB

    REM: Script to compile invalid objects in DB after refreshing REM: REM:***************************** ...

  8. NOIP199904求Cantor表

    求Cantor表 题目描述 Description 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 ...

  9. MEANIO

    sudo npm install -g bower sudo npm install -g meanio sudo bower cache clean --allow-root sudo mean i ...

  10. 19、文件上传与下载/JavaMail邮件开发

    回顾: 一. 监听器 生命周期监听器 ServletRequestListener HttpSessionListener ServletContextListener 属性监听器 ServletRe ...