dbhelper数据操作类

  1.      using System; 
  2.     using System.Data; 
  3.     using System.Data.Common; 
  4.     using System.Configuration; 
  5.     public class DbHelper 
  6.     { 
  7.         private static string dbProviderName = ConfigurationManager.AppSettings["DbHelperProvider"]; 
  8.         private static string dbConnectionString = ConfigurationManager.AppSettings["DbHelperConnectionString"]; 
  9.         private DbConnection connection; 
  10.         public DbHelper() 
  11.         { 
  12.             this.connection = CreateConnection(DbHelper.dbConnectionString); 
  13.         } 
  14.         public DbHelper(string connectionString) 
  15.         { 
  16.             this.connection = CreateConnection(connectionString); 
  17.         } 
  18.         public static DbConnection CreateConnection() 
  19.         { 
  20.             DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DbHelper.dbProviderName); 
  21.             DbConnection dbconn = dbfactory.CreateConnection(); 
  22.             dbconn.ConnectionString = DbHelper.dbConnectionString; 
  23.             return dbconn; 
  24.         } 
  25.         public static DbConnection CreateConnection(string connectionString) 
  26.         { 
  27.             DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DbHelper.dbProviderName); 
  28.             DbConnection dbconn = dbfactory.CreateConnection();  
  29.             dbconn.ConnectionString = connectionString; 
  30.             return dbconn; 
  31.         } 
  32.         public DbCommand GetStoredProcCommond(string storedProcedure) 
  33.         { 
  34.             DbCommand dbCommand = connection.CreateCommand(); 
  35.             dbCommand.CommandText = storedProcedure; 
  36.             dbCommand.CommandType = CommandType.StoredProcedure; 
  37.             return dbCommand; 
  38.         } 
  39.         public DbCommand GetSqlStringCommond(string sqlQuery) 
  40.         { 
  41.             DbCommand dbCommand = connection.CreateCommand(); 
  42.             dbCommand.CommandText = sqlQuery; 
  43.             dbCommand.CommandType = CommandType.Text; 
  44.             return dbCommand; 
  45.         } 
  46.         增加参数增加参数#region 增加参数 
  47.         public void AddParameterCollection(DbCommand cmd, DbParameterCollection dbParameterCollection) 
  48.         { 
  49.             foreach (DbParameter dbParameter in dbParameterCollection) 
  50.             { 
  51.                 cmd.Parameters.Add(dbParameter); 
  52.             } 
  53.         } 
  54.         public void AddOutParameter(DbCommand cmd, string parameterName, DbType dbType, int size)  
  55.         { 
  56.             DbParameter dbParameter = cmd.CreateParameter(); 
  57.             dbParameter.DbType = dbType; 
  58.             dbParameter.ParameterName = parameterName; 
  59.             dbParameter.Size = size; 
  60.             dbParameter.Direction = ParameterDirection.Output; 
  61.             cmd.Parameters.Add(dbParameter); 
  62.         } 
  63.         public void AddInParameter(DbCommand cmd, string parameterName, DbType dbType, object value) 
  64.         { 
  65.             DbParameter dbParameter = cmd.CreateParameter(); 
  66.             dbParameter.DbType = dbType; 
  67.             dbParameter.ParameterName = parameterName; 
  68.             dbParameter.Value = value; 
  69.             dbParameter.Direction = ParameterDirection.Input; 
  70.             cmd.Parameters.Add(dbParameter); 
  71.         } 
  72.         public void AddReturnParameter(DbCommand cmd, string parameterName, DbType dbType) 
  73.         { 
  74.             DbParameter dbParameter = cmd.CreateParameter(); 
  75.             dbParameter.DbType = dbType; 
  76.             dbParameter.ParameterName = parameterName; 
  77.             dbParameter.Direction = ParameterDirection.ReturnValue;  
  78.             cmd.Parameters.Add(dbParameter); 
  79.         } 
  80.         public DbParameter GetParameter(DbCommand cmd, string parameterName) 
  81.         { 
  82.             return cmd.Parameters[parameterName]; 
  83.         } 
  84.         #endregion 
  85.         执行执行#region 执行 
  86.         public DataSet ExecuteDataSet(DbCommand cmd) 
  87.         { 
  88.             DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DbHelper.dbProviderName); 
  89.             DbDataAdapter dbDataAdapter = dbfactory.CreateDataAdapter(); 
  90.             dbDataAdapter.SelectCommand = cmd; 
  91.             DataSet ds = new DataSet(); 
  92.             dbDataAdapter.Fill(ds); 
  93.             return ds; 
  94.         } 
  95.         public DataTable ExecuteDataTable(DbCommand cmd) 
  96.         { 
  97.             DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DbHelper.dbProviderName); 
  98.             DbDataAdapter dbDataAdapter = dbfactory.CreateDataAdapter(); 
  99.             dbDataAdapter.SelectCommand = cmd; 
  100.             DataTable dataTable = new DataTable(); 
  101.             dbDataAdapter.Fill(dataTable); 
  102.             return dataTable;  
  103.         } 
  104.         public DbDataReader ExecuteReader(DbCommand cmd) 
  105.         { 
  106.             cmd.Connection.Open(); 
  107.             DbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);             
  108.             return reader; 
  109.         } 
  110.         public int ExecuteNonQuery(DbCommand cmd) 
  111.         { 
  112.             cmd.Connection.Open(); 
  113.             int ret = cmd.ExecuteNonQuery(); 
  114.             cmd.Connection.Close(); 
  115.             return ret; 
  116.         } 
  117.         public object ExecuteScalar(DbCommand cmd) 
  118.         { 
  119.             cmd.Connection.Open(); 
  120.             object ret = cmd.ExecuteScalar(); 
  121.             cmd.Connection.Close(); 
  122.             return ret; 
  123.         } 
  124.         #endregion         
  125.         执行事务执行事务#region 执行事务 
  126.         public DataSet ExecuteDataSet(DbCommand cmd,Trans t) 
  127.         { 
  128.             cmd.Connection = t.DbConnection; 
  129.             cmd.Transaction = t.DbTrans; 
  130.             DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DbHelper.dbProviderName);  
  131.             DbDataAdapter dbDataAdapter = dbfactory.CreateDataAdapter(); 
  132.             dbDataAdapter.SelectCommand = cmd; 
  133.             DataSet ds = new DataSet(); 
  134.             dbDataAdapter.Fill(ds); 
  135.             return ds; 
  136.         } 
  137.         public DataTable ExecuteDataTable(DbCommand cmd, Trans t) 
  138.         { 
  139.             cmd.Connection = t.DbConnection; 
  140.             cmd.Transaction = t.DbTrans; 
  141.             DbProviderFactory dbfactory = DbProviderFactories.GetFactory(DbHelper.dbProviderName); 
  142.             DbDataAdapter dbDataAdapter = dbfactory.CreateDataAdapter(); 
  143.             dbDataAdapter.SelectCommand = cmd; 
  144.             DataTable dataTable = new DataTable(); 
  145.             dbDataAdapter.Fill(dataTable); 
  146.             return dataTable; 
  147.         } 
  148.         public DbDataReader ExecuteReader(DbCommand cmd, Trans t) 
  149.         { 
  150.             cmd.Connection.Close(); 
  151.             cmd.Connection = t.DbConnection; 
  152.             cmd.Transaction = t.DbTrans;             
  153.             DbDataReader reader = cmd.ExecuteReader();  
  154.             DataTable dt = new DataTable();             
  155.             return reader; 
  156.         } 
  157.         public int ExecuteNonQuery(DbCommand cmd, Trans t) 
  158.         { 
  159.             cmd.Connection.Close(); 
  160.             cmd.Connection = t.DbConnection; 
  161.             cmd.Transaction = t.DbTrans;   
  162.             int ret = cmd.ExecuteNonQuery();             
  163.             return ret; 
  164.         } 
  165.         public object ExecuteScalar(DbCommand cmd, Trans t) 
  166.         { 
  167.             cmd.Connection.Close(); 
  168.             cmd.Connection = t.DbConnection; 
  169.             cmd.Transaction = t.DbTrans;   
  170.             object ret = cmd.ExecuteScalar();             
  171.             return ret; 
  172.         } 
  173.         #endregion 
  174.     } 
  175.     public class Trans : IDisposable 
  176.     { 
  177.         private DbConnection conn; 
  178.         private DbTransaction dbTrans; 
  179.         public DbConnection DbConnection 
  180.         {  
  181.             get { return this.conn; } 
  182.         } 
  183.         public DbTransaction DbTrans 
  184.         { 
  185.             get { return this.dbTrans; } 
  186.         } 
  187.         public Trans() 
  188.         { 
  189.             conn = DbHelper.CreateConnection(); 
  190. conn.Open(); 
  191.             dbTrans = conn.BeginTransaction(); 
  192.         } 
  193.         public Trans(string connectionString) 
  194.         { 
  195.             conn = DbHelper.CreateConnection(connectionString); 
  196.             conn.Open(); 
  197.             dbTrans = conn.BeginTransaction(); 
  198.         } 
  199.         public void Commit() 
  200.         { 
  201.             dbTrans.Commit(); 
  202.             this.Colse(); 
  203.         } 
  204.         public void RollBack() 
  205.         { 
  206.             dbTrans.Rollback(); 
  207.             this.Colse(); 
  208.         } 
  209.         public void Dispose() 
  210.         { 
  211.             this.Colse(); 
  212.         } 
  213.         public void Colse()  
  214.         { 
  215.             if (conn.State == System.Data.ConnectionState.Open) 
  216.             { 
  217.                 conn.Close(); 
  218.             } 
  219.         } 
  220.     } 
  221. 那么如何使用它呢?下面我给出一些基本的使用示例,基本能满足你大部分的数据库操作需要了. 
  222. 1)直接执行sql语句 
  223.         DbHelper db = new DbHelper(); 
  224.         DbCommand cmd = db.GetSqlStringCommond("insert t1 (id)values(’haha’)"); 
  225.         db.ExecuteNonQuery(cmd); 
  226. 2)执行存储过程 
  227.         DbHelper db = new DbHelper(); 
  228.         DbCommand cmd = db.GetStoredProcCommond("t1_insert"); 
  229.         db.AddInParameter(cmd, "@id", DbType.String, "heihei"); 
  230.         db.ExecuteNonQuery(cmd); 
  231. 3)返回DataSet 
  232.         DbHelper db = new DbHelper(); 
  233.         DbCommand cmd = db.GetSqlStringCommond("select * from t1"); 
  234.         DataSet ds = db.ExecuteDataSet(cmd); 
  235. 4)返回DataTable 
  236.         DbHelper db = new DbHelper(); 
  237.         DbCommand cmd = db.GetSqlStringCommond("t1_findall"); 
  238.         DataTable dt = db.ExecuteDataTable(cmd); 
  239. 5)输入参数/输出参数/返回值的使用(比较重要哦) 
  240.         DbHelper db = new DbHelper(); 
  241.         DbCommand cmd = db.GetStoredProcCommond("t2_insert"); 
  242.         db.AddInParameter(cmd, "@timeticks", DbType.Int64, DateTime.Now.Ticks); 
  243.         db.AddOutParameter(cmd, "@outString", DbType.String, 20);  
  244.         db.AddReturnParameter(cmd, "@returnValue", DbType.Int32); 
  245.         db.ExecuteNonQuery(cmd); 
  246.         string s = db.GetParameter(cmd, "@outString").Value as string;//out parameter 
  247.         int r = Convert.ToInt32(db.GetParameter(cmd, "@returnValue").Value);//return value 
  248. 6)DataReader使用 
  249.       DbHelper db = new DbHelper(); 
  250.         DbCommand cmd = db.GetStoredProcCommond("t2_insert"); 
  251.         db.AddInParameter(cmd, "@timeticks", DbType.Int64, DateTime.Now.Ticks); 
  252.         db.AddOutParameter(cmd, "@outString", DbType.String, 20); 
  253.         db.AddReturnParameter(cmd, "@returnValue", DbType.Int32); 
  254.         using (DbDataReader reader = db.ExecuteReader(cmd)) 
  255.         { 
  256.             dt.Load(reader); 
  257.         }         
  258.         string s = db.GetParameter(cmd, "@outString").Value as string;//out parameter 
  259.         int r = Convert.ToInt32(db.GetParameter(cmd, "@returnValue").Value);//return value 
  260. 7)事务的使用.(项目中需要将基本的数据库操作组合成一个完整的业务流时,代码级的事务是必不可少的哦) 
  261.     pubic void DoBusiness() 
  262.     { 
  263.         using (Trans t = new Trans()) 
  264.         { 
  265.             try 
  266.             { 
  267.                 D1(t); 
  268.                 throw new Exception();//如果有异常,会回滚滴  
  269.                 D2(t); 
  270.                 t.Commit(); 
  271.             } 
  272.             catch 
  273.             { 
  274.                 t.RollBack(); 
  275.             } 
  276.         } 
  277.     } 
  278.     public void D1(Trans t) 
  279.     { 
  280.         DbHelper db = new DbHelper(); 
  281.         DbCommand cmd = db.GetStoredProcCommond("t2_insert"); 
  282.         db.AddInParameter(cmd, "@timeticks", DbType.Int64, DateTime.Now.Ticks); 
  283.         db.AddOutParameter(cmd, "@outString", DbType.String, 20); 
  284.         db.AddReturnParameter(cmd, "@returnValue", DbType.Int32); 
  285.         if (t == null) db.ExecuteNonQuery(cmd); 
  286.         else db.ExecuteNonQuery(cmd,t); 
  287.         string s = db.GetParameter(cmd, "@outString").Value as string;//out parameter 
  288.         int r = Convert.ToInt32(db.GetParameter(cmd, "@returnValue").Value);//return value 
  289.     } 
  290.     public void D2(Trans t) 
  291.     { 
  292.         DbHelper db = new DbHelper(); 
  293.         DbCommand cmd = db.GetSqlStringCommond("insert t1 (id)values(’..’)");         
  294.         if (t == null) db.ExecuteNonQuery(cmd); 
  295.         else db.ExecuteNonQuery(cmd, t); 
  296.     }  
  297. 以上我们好像没有指定数据库连接字符串,大家如果看下DbHelper的代码,就知道要使用它必须在config中配置两个参数,如下: 
  298.     <appSettings> 
  299.         <add key="DbHelperProvider" value="System.Data.SqlClient"/> 
  300.         <add key="DbHelperConnectionString" value="Data Source=(local);Initial Catalog=DbHelperTest;Persist Security Info=True;User ID=sa;Password=sa"/> 
  301.     </appSettings>其实,DbHelper需要的仅仅是两个字符串,你可以自己修改,作成加密什么的 
  302. 好了,就这样,DbHelper的代码是非常简单和透明的,只是在ado.net上做了一点小包装,改变了一下使用它的程序员的编码方式,去除掉一些比较"物理级"的编程概念,如connection的open和close之类的,使程序员更专注于业务逻辑代码的编写,少死掉点脑细胞,另外,统一了数据操作层的数据操作代码的风格和格式,维护起来很方便的撒~~~ 
  303. 另:以上代码大家可以随意使用, 不需要给我版权费的啦,嘿嘿.如果大家发现有什么BUG,或者有更好的数据操作类的实现方式,请联系我哦. 

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

namespace GraduationProject.DAL
{
   
public static class DBHelper
    {
       
private static SqlConnection connection;

       
public static SqlConnection Connection
        {
           
get
            {

               
//string connectionString = ConfigurationManager.ConnectionStrings["GraduationProjectDB"].ConnectionString;
                if (connection == null)
                {
                    connection
= new SqlConnection("server=.;database=GraduationProjectDB;User ID=sa;password=123456;");
                   
//connection.ConnectionString = "server=.;database=GraduationProjectDB;User ID=sa;password=;";
                    connection.Open();
                }
               
else if (connection.State == System.Data.ConnectionState.Closed)
                {
                    connection.Open();
                }
               
else if (connection.State == System.Data.ConnectionState.Broken)
                {
                    connection.Close();
                    connection.Open();
                }
               
return connection;
            }
        }

       
public static int ExecuteCommand(string safeSql)
        {
            SqlCommand cmd
= new SqlCommand(safeSql, Connection);
           
int result = cmd.ExecuteNonQuery();
           
return result;
        }

       
public static int ExecuteCommand(string sql, params SqlParameter[] values)
        {
            SqlCommand cmd
= new SqlCommand(sql, Connection);
            cmd.Parameters.AddRange(values);
           
int result=cmd.ExecuteNonQuery();
           
return result;
        }

       
public static int GetScalar(string safeSql)
        {
            SqlCommand cmd
= new SqlCommand(safeSql, Connection);
           
int result = Convert.ToInt32(cmd.ExecuteScalar());
           
return result;
        }

       
public static int GetScalar(string sql, params SqlParameter[] values)
        {
            SqlCommand cmd
= new SqlCommand(sql, Connection);
            cmd.Parameters.AddRange(values);
           
int result = Convert.ToInt32(cmd.ExecuteScalar());
           
return result;
        }

       
public static SqlDataReader GetReader(string safeSql)
        {
            SqlCommand cmd
= new SqlCommand(safeSql, Connection);
            SqlDataReader reader
= cmd.ExecuteReader();
           
return reader;
        }

       
public static SqlDataReader GetReader(string sql, params SqlParameter[] values)
        {
            SqlCommand cmd
= new SqlCommand(sql, Connection);
            cmd.Parameters.AddRange(values);
            SqlDataReader reader
= cmd.ExecuteReader();
           
return reader;
        }

       
public static DataTable GetDataSet(string safeSql)
        {
            DataSet ds
= new DataSet();
            SqlCommand cmd
= new SqlCommand(safeSql, Connection);
            SqlDataAdapter da
= new SqlDataAdapter(cmd);
            da.Fill(ds);
           
return ds.Tables[0];
        }

       
public static DataTable GetDataSet(string sql, params SqlParameter[] values)
        {
            DataSet ds
= new DataSet();
            SqlCommand cmd
= new SqlCommand(sql, Connection);
            cmd.Parameters.AddRange(values);
            SqlDataAdapter da
= new SqlDataAdapter(cmd);
            da.Fill(ds);
           
return ds.Tables[0];
        }

    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值