DbHelperSQL数据库类 数据库层

  1. using System;
  2. using System.Collections;
  3. using System.Collections.Specialized;
  4. using System.Data;
  5. using System.Data.SqlClient;
  6. using System.Configuration;
  7. namespace SQLServerDAL //可以修改成实际项目的命名空间名称
  8. {
  9.     /**//// <summary>
  10.     /// Copyright (C) 2004-2008 LiTianPing 
  11.     /// 数据访问基础类(基于SQLServer)
  12.     /// 用户可以修改满足自己项目的需要。
  13.     /// </summary>
  14.     public class DbHelperSQL
  15.     {
  16.         //数据库连接字符串(web.config来配置)
  17.         //<add key="ConnectionString11" value="server=127.0.0.1;database=DATABASE;uid=sa;pwd=" />        
  18.         protected static string ConnectionString1 = ConfigurationSettings.AppSettings["ConnectionString1"];
  19.         public DbHelperSQL()
  20.         {            
  21.         }
  22.         公用方法#region 公用方法
  23.         public static decimal GetMaxID(string FieldName,string TableName)
  24.         {
  25.             string strsql = "select max(" + FieldName + ")+1 from " + TableName;
  26.             object obj = GetSingle(strsql);
  27.             if (obj == null)
  28.             {
  29.                 return 1;
  30.             }
  31.             else
  32.             {
  33.                 return int.Parse(obj.ToString());
  34.             }
  35.         }
  36.         public static bool Exists(string strSql, params SqlParameter[] cmdParms)
  37.         {
  38.             object obj = GetSingle(strSql, cmdParms);
  39.             int cmdresult;
  40.             if((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  41.             {
  42.                 cmdresult = 0;
  43.             }
  44.             else
  45.             {
  46.                 cmdresult = int.Parse(obj.ToString());
  47.             }
  48.             if (cmdresult == 0)
  49.             {
  50.                 return false;
  51.             }
  52.             else
  53.             {
  54.                 return true;
  55.             }
  56.         }
  57.         #endregion
  58.         执行简单SQL语句#region  执行简单SQL语句
  59.         /**//// <summary>
  60.         /// 执行SQL语句,返回影响的记录数
  61.         /// </summary>
  62.         /// <param name="SQLString">SQL语句</param>
  63.         /// <returns>影响的记录数</returns>
  64.         public static int ExecuteSql(string SQLString)
  65.         {
  66.             using (SqlConnection connection = new SqlConnection(ConnectionString1))
  67.             {                
  68.                 using (SqlCommand cmd = new SqlCommand(SQLString,connection))
  69.                 {
  70.                     try
  71.                     {        
  72.                         connection.Open();
  73.                         int rows=cmd.ExecuteNonQuery();
  74.                         return rows;
  75.                     }
  76.                     catch(System.Data.SqlClient.SqlException)
  77.                     {
  78.                     
  79.                         connection.Close();
  80.                         throw;
  81.                     //    throw new Exception(E.Message);
  82.                     }
  83.                 }                
  84.             }
  85.         }
  86.         
  87.         /**//// <summary>
  88.         /// 执行多条SQL语句,实现数据库事务。
  89.         /// </summary>
  90.         /// <param name="SQLStringList">多条SQL语句</param>        
  91.         public static bool ExecuteSqlTran(ArrayList SQLStringList)
  92.         {
  93.             int tmp = 0;
  94.             using (SqlConnection conn = new SqlConnection(ConnectionString1))
  95.             {
  96.                 conn.Open();
  97.                 SqlCommand cmd = new SqlCommand();
  98.                 cmd.Connection=conn;                
  99.                 SqlTransaction tx=conn.BeginTransaction();            
  100.                 cmd.Transaction=tx;                
  101.                 try
  102.                 {           
  103.                     for(int n=0;n<SQLStringList.Count;n++)
  104.                     {
  105.                         string strsql=SQLStringList[n].ToString();
  106.                         if (strsql.Trim().Length>1)
  107.                         {
  108.                             cmd.CommandText=strsql;
  109.                             tmp = cmd.ExecuteNonQuery();
  110.                         }
  111.                     }                                        
  112.                     tx.Commit();    
  113.                     if(tmp>0)
  114.                     {
  115.                         return true;
  116.                     }
  117.                     else
  118.                     {
  119.                         return false;
  120.                     }
  121.                 }
  122.                 catch(System.Data.SqlClient.SqlException E)
  123.                 {        
  124.                     tx.Rollback();
  125.                     throw new Exception(E.Message);
  126.                 }
  127.             }
  128.         }
  129.         /**//// <summary>
  130.         /// 执行带一个存储过程参数的的SQL语句。
  131.         /// </summary>
  132.         /// <param name="SQLString">SQL语句</param>
  133.         /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
  134.         /// <returns>影响的记录数</returns>
  135.         public static int ExecuteSql(string SQLString,string content)
  136.         {                
  137.             using (SqlConnection connection = new SqlConnection(ConnectionString1))
  138.             {
  139.                 SqlCommand cmd = new SqlCommand(SQLString,connection);        
  140.                 System.Data.SqlClient.SqlParameter  myParameter = new System.Data.SqlClient.SqlParameter ( "@content", SqlDbType.NText);
  141.                 myParameter.Value = content ;
  142.                 cmd.Parameters.Add(myParameter);
  143.                 try
  144.                 {
  145.                     connection.Open();
  146.                     int rows=cmd.ExecuteNonQuery();
  147.                     return rows;
  148.                 }
  149.                 catch(System.Data.SqlClient.SqlException E)
  150.                 {                
  151.                     throw new Exception(E.Message);
  152.                 }
  153.                 finally
  154.                 {
  155.                     cmd.Dispose();
  156.                     connection.Close();
  157.                 }    
  158.             }
  159.         }        
  160.         /**//// <summary>
  161.         /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)
  162.         /// </summary>
  163.         /// <param name="strSQL">SQL语句</param>
  164.         /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>
  165.         /// <returns>影响的记录数</returns>
  166.         public static int ExecuteSqlInsertImg(string strSQL,byte[] fs)
  167.         {        
  168.             using (SqlConnection connection = new SqlConnection(ConnectionString1))
  169.             {
  170.                 SqlCommand cmd = new SqlCommand(strSQL,connection);    
  171.                 System.Data.SqlClient.SqlParameter  myParameter = new System.Data.SqlClient.SqlParameter ( "@fs", SqlDbType.Image);
  172.                 myParameter.Value = fs ;
  173.                 cmd.Parameters.Add(myParameter);
  174.                 try
  175.                 {
  176.                     connection.Open();
  177.                     int rows=cmd.ExecuteNonQuery();
  178.                     return rows;
  179.                 }
  180.                 catch(System.Data.SqlClient.SqlException E)
  181.                 {                
  182.                     throw new Exception(E.Message);
  183.                 }
  184.                 finally
  185.                 {
  186.                     cmd.Dispose();
  187.                     connection.Close();
  188.                 }                
  189.             }
  190.         }
  191.         
  192.         /**//// <summary>
  193.         /// 执行一条计算查询结果语句,返回查询结果(object)。
  194.         /// </summary>
  195.         /// <param name="SQLString">计算查询结果语句</param>
  196.         /// <returns>查询结果(object)</returns>
  197.         public static object GetSingle(string SQLString)
  198.         {
  199.             using (SqlConnection connection = new SqlConnection(ConnectionString1))
  200.             {
  201.                 using(SqlCommand cmd = new SqlCommand(SQLString,connection))
  202.                 {
  203.                     try
  204.                     {
  205.                         connection.Open();
  206.                         object obj = cmd.ExecuteScalar();
  207.                         if((Object.Equals(obj,null))||(Object.Equals(obj,System.DBNull.Value)))
  208.                         {                    
  209.                             return null;
  210.                         }
  211.                         else
  212.                         {
  213.                             return obj;
  214.                         }                
  215.                     }
  216.                     catch(System.Data.SqlClient.SqlException e)
  217.                     {                        
  218.                         connection.Close();
  219.                         throw new Exception(e.Message);
  220.                     }    
  221.                 }
  222.             }
  223.         }
  224.         /**//// <summary>
  225.         /// 执行查询语句,返回SqlDataReader
  226.         /// </summary>
  227.         /// <param name="strSQL">查询语句</param>
  228.         /// <returns>SqlDataReader</returns>
  229.         public static SqlDataReader ExecuteReader(string strSQL)
  230.         {
  231.             SqlConnection connection = new SqlConnection(ConnectionString1);            
  232.             SqlCommand cmd = new SqlCommand(strSQL,connection);                
  233.             try
  234.             {
  235.                 connection.Open();    
  236.                 SqlDataReader myReader = cmd.ExecuteReader();
  237.                 return myReader;
  238.             }
  239.             catch(System.Data.SqlClient.SqlException e)
  240.             {                                
  241.                 throw new Exception(e.Message);
  242.             }            
  243.             
  244.         }        
  245.         /**//// <summary>
  246.         /// 执行查询语句,返回DataSet
  247.         /// </summary>
  248.         /// <param name="SQLString">查询语句</param>
  249.         /// <returns>DataSet</returns>
  250.         public static DataSet Query(string SQLString)
  251.         {
  252.             SqlConnection connection = null;
  253.             try
  254.             {
  255.                 using (connection = new SqlConnection(ConnectionString1))
  256.                 {
  257.                     DataSet ds = new DataSet();
  258.                     connection.Open();
  259.                     SqlDataAdapter command = new SqlDataAdapter(SQLString,connection);                
  260.                     command.Fill(ds,"ds");                    
  261.                     return ds;
  262.                 }        
  263.             }
  264.             catch(System.Exception)
  265.             {
  266.                 throw;
  267.                 //return null;
  268.             }
  269.             finally
  270.             {                
  271.                 connection.Dispose();
  272.             }
  273.             
  274.         }
  275.         #endregion
  276.         执行带参数的SQL语句#region 执行带参数的SQL语句
  277.         /**//// <summary>
  278.         /// 执行SQL语句,返回影响的记录数
  279.         /// </summary>
  280.         /// <param name="SQLString">SQL语句</param>
  281.         /// <returns>影响的记录数</returns>
  282.         public static int ExecuteSql(string SQLString,params SqlParameter[] cmdParms)
  283.         {
  284.             using (SqlConnection connection = new SqlConnection(ConnectionString1))
  285.             {                
  286.                 using (SqlCommand cmd = new SqlCommand())
  287.                 {
  288.                     try
  289.                     {        
  290.                         PrepareCommand(cmd, connection, null,SQLString, cmdParms);
  291.                         int rows=cmd.ExecuteNonQuery();
  292.                         cmd.Parameters.Clear();
  293.                         return rows;
  294.                     }
  295.                     catch(System.Data.SqlClient.SqlException E)
  296.                     {                
  297.                         throw new Exception(E.Message);
  298.                     }
  299.                 }                
  300.             }
  301.         }
  302.         
  303.             
  304.         /**//// <summary>
  305.         /// 执行多条SQL语句,实现数据库事务。
  306.         /// </summary>
  307.         /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
  308.         public static void ExecuteSqlTran(Hashtable SQLStringList)
  309.         {            
  310.             using (SqlConnection conn = new SqlConnection(ConnectionString1))
  311.             {
  312.                 conn.Open();
  313.                 using (SqlTransaction trans = conn.BeginTransaction()) 
  314.                 {
  315.                     SqlCommand cmd = new SqlCommand();
  316.                     try 
  317.                     {
  318.                         //循环
  319.                         foreach (DictionaryEntry myDE in SQLStringList)
  320.                         {    
  321.                             string     cmdText=myDE.Key.ToString();
  322.                             SqlParameter[] cmdParms=(SqlParameter[])myDE.Value;
  323.                             PrepareCommand(cmd,conn,trans,cmdText, cmdParms);
  324.                             int val = cmd.ExecuteNonQuery();
  325.                             cmd.Parameters.Clear();
  326.                             trans.Commit();
  327.                         }                    
  328.                     }
  329.                     catch 
  330.                     {
  331.                         trans.Rollback();
  332.                         throw;
  333.                     }
  334.                 }                
  335.             }
  336.         }
  337.     
  338.                 
  339.         /**//// <summary>
  340.         /// 执行一条计算查询结果语句,返回查询结果(object)。
  341.         /// </summary>
  342.         /// <param name="SQLString">计算查询结果语句</param>
  343.         /// <returns>查询结果(object)</returns>
  344.         public static object GetSingle(string SQLString,params SqlParameter[] cmdParms)
  345.         {
  346.             using (SqlConnection connection = new SqlConnection(ConnectionString1))
  347.             {
  348.                 using (SqlCommand cmd = new SqlCommand())
  349.                 {
  350.                     try
  351.                     {
  352.                         PrepareCommand(cmd, connection, null,SQLString, cmdParms);
  353.                         object obj = cmd.ExecuteScalar();
  354.                         cmd.Parameters.Clear();
  355.                         if((Object.Equals(obj,null))||(Object.Equals(obj,System.DBNull.Value)))
  356.                         {                    
  357.                             return null;
  358.                         }
  359.                         else
  360.                         {
  361.                             return obj;
  362.                         }                
  363.                     }
  364.                     catch(System.Data.SqlClient.SqlException e)
  365.                     {                
  366.                         throw new Exception(e.Message);
  367.                     }                    
  368.                 }
  369.             }
  370.         }
  371.         
  372.         /**//// <summary>
  373.         /// 执行查询语句,返回SqlDataReader
  374.         /// </summary>
  375.         /// <param name="strSQL">查询语句</param>
  376.         /// <returns>SqlDataReader</returns>
  377.         public static SqlDataReader ExecuteReader(string SQLString,params SqlParameter[] cmdParms)
  378.         {        
  379.             SqlConnection connection = new SqlConnection(ConnectionString1);
  380.             SqlCommand cmd = new SqlCommand();                
  381.             try
  382.             {
  383.                 PrepareCommand(cmd, connection, null,SQLString, cmdParms);
  384.                 SqlDataReader myReader = cmd.ExecuteReader();
  385.                 cmd.Parameters.Clear();
  386.                 return myReader;
  387.             }
  388.             catch(System.Data.SqlClient.SqlException e)
  389.             {                                
  390.                 throw new Exception(e.Message);
  391.             }                    
  392.             
  393.         }        
  394.         
  395.         /**//// <summary>
  396.         /// 执行查询语句,返回DataSet
  397.         /// </summary>
  398.         /// <param name="SQLString">查询语句</param>
  399.         /// <returns>DataSet</returns>
  400.         public static DataSet Query(string SQLString,params SqlParameter[] cmdParms)
  401.         {
  402.             using (SqlConnection connection = new SqlConnection(ConnectionString1))
  403.             {
  404.                 SqlCommand cmd = new SqlCommand();
  405.                 PrepareCommand(cmd, connection, null,SQLString, cmdParms);
  406.                 using( SqlDataAdapter da = new SqlDataAdapter(cmd) )
  407.                 {
  408.                     DataSet ds = new DataSet();    
  409.                     try
  410.                     {                                                
  411.                         da.Fill(ds,"ds");
  412.                         cmd.Parameters.Clear();
  413.                     }
  414.                     catch(System.Data.SqlClient.SqlException ex)
  415.                     {                
  416.                         throw new Exception(ex.Message);
  417.                     }            
  418.                     return ds;
  419.                 }                
  420.             }            
  421.         }
  422.         private static void PrepareCommand(SqlCommand cmd,SqlConnection conn,SqlTransaction trans, string cmdText, SqlParameter[] cmdParms) 
  423.         {
  424.             if (conn.State != ConnectionState.Open)
  425.                 conn.Open();
  426.             cmd.Connection = conn;
  427.             cmd.CommandText = cmdText;
  428.             if (trans != null)
  429.                 cmd.Transaction = trans;
  430.             cmd.CommandType = CommandType.Text;//cmdType;
  431.             if (cmdParms != null
  432.             {
  433.                 foreach (SqlParameter parm in cmdParms)
  434.                     cmd.Parameters.Add(parm);
  435.             }
  436.         }
  437.         #endregion
  438.         存储过程操作#region 存储过程操作
  439.         /**//// <summary>
  440.         /// 执行存储过程
  441.         /// </summary>
  442.         /// <param name="storedProcName">存储过程名</param>
  443.         /// <param name="parameters">存储过程参数</param>
  444.         /// <returns>SqlDataReader</returns>
  445.         public static SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters )
  446.         {
  447.             SqlConnection connection = new SqlConnection(ConnectionString1);
  448.             SqlDataReader returnReader;
  449.             connection.Open();
  450.             SqlCommand command = BuildQueryCommand( connection,storedProcName, parameters );
  451.             command.CommandType = CommandType.StoredProcedure;
  452.             returnReader = command.ExecuteReader();                
  453.             return returnReader;            
  454.         }
  455.         
  456.         
  457.         /**//// <summary>
  458.         /// 执行存储过程
  459.         /// </summary>
  460.         /// <param name="storedProcName">存储过程名</param>
  461.         /// <param name="parameters">存储过程参数</param>
  462.         /// <param name="tableName">DataSet结果中的表名</param>
  463.         /// <returns>DataSet</returns>
  464.         public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName )
  465.         {
  466.             using (SqlConnection connection = new SqlConnection(ConnectionString1))
  467.             {
  468.                 DataSet dataSet = new DataSet();
  469.                 connection.Open();
  470.                 SqlDataAdapter sqlDA = new SqlDataAdapter();
  471.                 sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters );
  472.                 sqlDA.Fill( dataSet, tableName );
  473.                 connection.Close();
  474.                 return dataSet;
  475.             }
  476.         }
  477.         
  478.         /**//// <summary>
  479.         /// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)
  480.         /// </summary>
  481.         /// <param name="connection">数据库连接</param>
  482.         /// <param name="storedProcName">存储过程名</param>
  483.         /// <param name="parameters">存储过程参数</param>
  484.         /// <returns>SqlCommand</returns>
  485.         private static SqlCommand BuildQueryCommand(SqlConnection connection,string storedProcName, IDataParameter[] parameters)
  486.         {            
  487.             SqlCommand command = new SqlCommand( storedProcName, connection );
  488.             command.CommandType = CommandType.StoredProcedure;
  489.             foreach (SqlParameter parameter in parameters)
  490.             {
  491.                 command.Parameters.Add( parameter );
  492.             }
  493.             return command;            
  494.         }
  495.         
  496.         /**//// <summary>
  497.         /// 执行存储过程,返回影响的行数        
  498.         /// </summary>
  499.         /// <param name="storedProcName">存储过程名</param>
  500.         /// <param name="parameters">存储过程参数</param>
  501.         /// <param name="rowsAffected">影响的行数</param>
  502.         /// <returns></returns>
  503.         public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected )
  504.         {
  505.             using (SqlConnection connection = new SqlConnection(ConnectionString1))
  506.             {
  507.                 int result;
  508.                 connection.Open();
  509.                 SqlCommand command = BuildIntCommand(connection,storedProcName, parameters );
  510.                 rowsAffected = command.ExecuteNonQuery();
  511.                 result = (int)command.Parameters["ReturnValue"].Value;
  512.                 //Connection.Close();
  513.                 return result;
  514.             }
  515.         }
  516.         
  517.         /**//// <summary>
  518.         /// 创建 SqlCommand 对象实例(用来返回一个整数值)    
  519.         /// </summary>
  520.         /// <param name="storedProcName">存储过程名</param>
  521.         /// <param name="parameters">存储过程参数</param>
  522.         /// <returns>SqlCommand 对象实例</returns>
  523.         private static SqlCommand BuildIntCommand(SqlConnection connection,string storedProcName, IDataParameter[] parameters)
  524.         {
  525.             SqlCommand command = BuildQueryCommand(connection,storedProcName, parameters );
  526.             command.Parameters.Add( new SqlParameter ( "ReturnValue",
  527.                 SqlDbType.Int,4,ParameterDirection.ReturnValue,
  528.                 false,0,0,string.Empty,DataRowVersion.Default,null ));
  529.             return command;
  530.         }
  531.         #endregion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值