zoukankan      html  css  js  c++  java
  • 一个挺好用的数据库操作类

    using System;
    using System.Data;
    using System.Configuration;
    using System.Data.SqlClient;
    using System.Collections;
    using System.Collections.Specialized;
    using System.Data.Common;
    using System.Collections.Generic;
    using System.IO;

    namespace Lib
    {
        public class SqlHelper
        {
           
       //数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.  
           // public string path = Application.Info.DirectoryPath;
            public string connectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\e5mhelpsystem.mdf;Integrated Security=True;User Instance=True";

    #region 公用方法

      public   int GetMaxID(string FieldName,string TableName)
      {
       string strsql = "select max(" + FieldName + ") from " + TableName;
       object obj = GetSingle(strsql);
       if (obj == null)
       {
        return 1;
       }
       else
       {
        return int.Parse(obj.ToString());
       }
      }
      public  bool Exists(string strSql, params SqlParameter[] cmdParms)
      {
       object obj = GetSingle(strSql, cmdParms);
       int cmdresult;
       if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
       {
        cmdresult = 0;
       }
       else
       {
        cmdresult = int.Parse(obj.ToString());
       }
       if (cmdresult == 0)
       {
        return false;
       }
       else
       {
        return true;
       }
      }
      #endregion

      #region  执行简单SQL语句

      /// <summary>
      /// 执行SQL语句,返回影响的记录数
      /// </summary>
      /// <param name="SQLString">SQL语句</param>
      /// <returns>影响的记录数</returns>
      public   int ExecuteSql(string SQLString)
      {
       using (SqlConnection connection = new SqlConnection(connectionString))
       {    
        using (SqlCommand cmd = new SqlCommand(SQLString,connection))
        {
         try
         {  
          connection.Open();
          int rows=cmd.ExecuteNonQuery();


          return rows;
         }
         catch(System.Data.SqlClient.SqlException E)
         {

          throw new Exception(E.Message+"<br>"+SQLString);
         }
        }    
       }
      }
     

      /// <summary>
      /// 执行多条SQL语句,实现数据库事务。
      /// </summary>
      /// <param name="SQLStringList">多条SQL语句</param>  
      public   void ExecuteSqlTran(ArrayList SQLStringList)
      {
       using (SqlConnection conn = new SqlConnection(connectionString))
       {
        conn.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.Connection=conn;    
        SqlTransaction tx=conn.BeginTransaction();   
        cmd.Transaction=tx;    
        try
        {     
         for(int n=0;n<SQLStringList.Count;n++)
         {
          string strsql=SQLStringList[n].ToString();
          if (strsql.Trim().Length>1)
          {
           cmd.CommandText=strsql;
           cmd.ExecuteNonQuery();
          }
         }          
         tx.Commit();     
        }
        catch(System.Data.SqlClient.SqlException E)
        {  
         tx.Rollback();
         throw new Exception(E.Message);
        }
       }
     
      }
      /// <summary>
      /// 执行带一个存储过程参数的的SQL语句。
      /// </summary>
      /// <param name="SQLString">SQL语句</param>
      /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
      /// <returns>影响的记录数</returns>
      public   int ExecuteSql(string SQLString,string content)
      {    
       using (SqlConnection connection = new SqlConnection(connectionString))
       {
        SqlCommand cmd = new SqlCommand(SQLString,connection);  
        System.Data.SqlClient.SqlParameter  myParameter = new System.Data.SqlClient.SqlParameter ( "@content", SqlDbType.NText);
        myParameter.Value = content ;
        cmd.Parameters.Add(myParameter);
        try
        {
         connection.Open();
         int rows=cmd.ExecuteNonQuery();
         return rows;
        }
        catch(System.Data.SqlClient.SqlException E)
        {    
         throw new Exception(E.Message);
        }
        finally
        {
         cmd.Dispose();
                        connection.Close();
                        connection.Dispose();
        } 
       }


      }  
      /// <summary>
      /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)
      /// </summary>
      /// <param name="strSQL">SQL语句</param>
      /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>
      /// <returns>影响的记录数</returns>
      public   int ExecuteSqlInsertImg(string strSQL,byte[] fs)
      {  
       using (SqlConnection connection = new SqlConnection(connectionString))
       {
        SqlCommand cmd = new SqlCommand(strSQL,connection); 
        System.Data.SqlClient.SqlParameter  myParameter = new System.Data.SqlClient.SqlParameter ( "@fs", SqlDbType.Image);
        myParameter.Value = fs ;
        cmd.Parameters.Add(myParameter);
        try
        {
         connection.Open();
         int rows=cmd.ExecuteNonQuery();
         return rows;
        }
        catch(System.Data.SqlClient.SqlException E)
        {    
         throw new Exception(E.Message);
        }
        finally
        {
         cmd.Dispose();
                        connection.Close();
                        connection.Dispose();
        }    
       }

     
      }
      
      /// <summary>
      /// 执行一条计算查询结果语句,返回查询结果(object)。
      /// </summary>
      /// <param name="SQLString">计算查询结果语句</param>
      /// <returns>查询结果(object)</returns>
      public   object GetSingle(string SQLString)
      {
       using (SqlConnection connection = new SqlConnection(connectionString))
       {
        using(SqlCommand cmd = new SqlCommand(SQLString,connection))
        {
         try
         {
          connection.Open();
          object obj = cmd.ExecuteScalar();
          if((Object.Equals(obj,null))||(Object.Equals(obj,System.DBNull.Value)))
          {     
           return null;
          }
          else
          {
           return obj;
          }    
         }
         catch(System.Data.SqlClient.SqlException e)
         {      
          
          throw new Exception(e.Message);
         } 
        }

       }
     
      }
      /// <summary>
      /// 执行查询语句,返回SqlDataReader
      /// </summary>
      /// <param name="strSQL">查询语句</param>
      /// <returns>SqlDataReader</returns>
      public   SqlDataReader ExecuteReader(string strSQL)
      {
       SqlConnection connection = new SqlConnection(connectionString);   
       SqlCommand cmd = new SqlCommand(strSQL,connection);    
       try
       {
        connection.Open(); 
        SqlDataReader myReader = cmd.ExecuteReader();

        return myReader;
       }
       catch(System.Data.SqlClient.SqlException e)
       {

                    throw new Exception(e.Message);
       }
       
       
      }


            /// <summary>
            /// 执行查询语句,返回结果第一行第一列的值
            /// </summary>
            /// <param name="strSQL"></param>
            /// <returns></returns>
            public string  Executestring(string strSQL)
            {
                SqlConnection connection = new SqlConnection(connectionString);
                SqlCommand cmd = new SqlCommand(strSQL, connection);
                string str ="";
                try
                {
                    connection.Open();
                    str = (string)cmd.ExecuteScalar();
     
                    return str;
                }
                catch (System.Data.SqlClient.SqlException e)
                {
     
                    throw new Exception(e.Message);
                }

            }
         


      /// <summary>
      /// 执行查询语句,返回DataSet
      /// </summary>
      /// <param name="SQLString">查询语句</param>
      /// <returns>DataSet</returns>
      public   DataSet Query(string SQLString)
      {
       using (SqlConnection connection = new SqlConnection(connectionString))
       {
        DataSet ds = new DataSet();
        try
        {
         connection.Open();
         SqlDataAdapter command = new SqlDataAdapter(SQLString,connection);

         command.Fill(ds,"ds");
        }
        catch(System.Data.SqlClient.SqlException ex)
        {
                       
                        throw new Exception(ex.Message);
        }
     
                    return ds;
       }   
      }

            /// <summary>
            /// 执行查询语句,返回DataView
            /// </summary>
            /// <param name="SQLString">查询语句</param>
            /// <returns>DataView</returns>
            public  DataView QueryView(string SQLString)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    DataSet ds = new DataSet();
                    try
                    {
                        connection.Open();
                        SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);

                        command.Fill(ds, "ds");

                    }
                    catch (System.Data.SqlClient.SqlException ex)
                    {
                        throw new Exception(SQLString + "<br>" + ex.Message);
                    }
                    connection.Close();
                    connection.Dispose();
                    return ds.Tables[0].DefaultView;
                }
            }

            /// <summary>
            /// 执行查询语句,返回DataTable
            /// </summary>
            /// <param name="SQLString">查询语句</param>
            /// <returns>DataTable</returns>
            public   DataTable QueryTable(string SQLString)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    DataSet ds = new DataSet();
                    try
                    {
                        connection.Open();
                        SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
                        command.Fill(ds, "ds");
                    }
                    catch (System.Data.SqlClient.SqlException ex)
                    {
                        throw new Exception(ex.Message);
                    }

                     return ds.Tables[0];
                }
            }

      #endregion

      #region 执行带参数的SQL语句

      /// <summary>
      /// 执行SQL语句,返回影响的记录数
      /// </summary>
      /// <param name="SQLString">SQL语句</param>
      /// <returns>影响的记录数</returns>
      public   int ExecuteSql(string SQLString,params SqlParameter[] cmdParms)
      {
       using (SqlConnection connection = new SqlConnection(connectionString))
       {    
        using (SqlCommand cmd = new SqlCommand())
        {
         try
         {  
          PrepareCommand(cmd, connection, null,SQLString, cmdParms);
          int rows=cmd.ExecuteNonQuery();
          cmd.Parameters.Clear();
          return rows;
         }
         catch(System.Data.SqlClient.SqlException E)
         {    
          throw new Exception(E.Message);
         }
     
        }    
       }
      }
      
       
      /// <summary>
      /// 执行多条SQL语句,实现数据库事务。
      /// </summary>
      /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
      public   void ExecuteSqlTran(Hashtable SQLStringList)
      {   
       using (SqlConnection conn = new SqlConnection(connectionString))
       {
        conn.Open();
        using (SqlTransaction trans = conn.BeginTransaction())
        {
         SqlCommand cmd = new SqlCommand();
         try
         {
          //循环
          foreach (DictionaryEntry myDE in SQLStringList)
          { 
           string  cmdText=myDE.Key.ToString();
           SqlParameter[] cmdParms=(SqlParameter[])myDE.Value;
           PrepareCommand(cmd,conn,trans,cmdText, cmdParms);
           int val = cmd.ExecuteNonQuery();
           cmd.Parameters.Clear();

           trans.Commit();
          }     
         }
         catch
         {
          trans.Rollback();
          throw;
         }
        }    
       }
      }
     
        
      /// <summary>
      /// 执行一条计算查询结果语句,返回查询结果(object)。
      /// </summary>
      /// <param name="SQLString">计算查询结果语句</param>
      /// <returns>查询结果(object)</returns>
      public   object GetSingle(string SQLString,params SqlParameter[] cmdParms)
      {
       using (SqlConnection connection = new SqlConnection(connectionString))
       {
        using (SqlCommand cmd = new SqlCommand())
        {
         try
         {
          PrepareCommand(cmd, connection, null,SQLString, cmdParms);
          object obj = cmd.ExecuteScalar();
          cmd.Parameters.Clear();
          if((Object.Equals(obj,null))||(Object.Equals(obj,System.DBNull.Value)))
          {     
           return null;
          }
          else
          {
           return obj;
          }    
         }
         catch(System.Data.SqlClient.SqlException e)
         {    
          throw new Exception(e.Message);
         }     
        }
       }
      }
      
      /// <summary>
      /// 执行查询语句,返回SqlDataReader
      /// </summary>
      /// <param name="strSQL">查询语句</param>
      /// <returns>SqlDataReader</returns>
      public   SqlDataReader ExecuteReader(string SQLString,params SqlParameter[] cmdParms)
      {  
       SqlConnection connection = new SqlConnection(connectionString);
       SqlCommand cmd = new SqlCommand();    
       try
       {
        PrepareCommand(cmd, connection, null,SQLString, cmdParms);
        SqlDataReader myReader = cmd.ExecuteReader();
        cmd.Parameters.Clear();
        return myReader;
       }
       catch(System.Data.SqlClient.SqlException e)
       {        
        throw new Exception(e.Message);
       }     
       
      }  
      
      /// <summary>
      /// 执行查询语句,返回DataSet
      /// </summary>
      /// <param name="SQLString">查询语句</param>
      /// <returns>DataSet</returns>
      public   DataSet Query(string SQLString,params SqlParameter[] cmdParms)
      {
       using (SqlConnection connection = new SqlConnection(connectionString))
       {
        SqlCommand cmd = new SqlCommand();
        PrepareCommand(cmd, connection, null,SQLString, cmdParms);
        using( SqlDataAdapter da = new SqlDataAdapter(cmd) )
        {
         DataSet ds = new DataSet(); 
         try
         {            
          da.Fill(ds,"ds");
          cmd.Parameters.Clear();
         }
         catch(System.Data.SqlClient.SqlException ex)
         {    
          throw new Exception(ex.Message);
         }   
         return ds;
        }    
       }   
      }


      private   void PrepareCommand(SqlCommand cmd,SqlConnection conn,SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
      {
       if (conn.State != ConnectionState.Open)
        conn.Open();
       cmd.Connection = conn;
       cmd.CommandText = cmdText;
       if (trans != null)
        cmd.Transaction = trans;
       cmd.CommandType = CommandType.Text;//cmdType;
       if (cmdParms != null)
       {
        foreach (SqlParameter parm in cmdParms)
         cmd.Parameters.Add(parm);
       }
      }

      #endregion

      #region 存储过程操作

      /// <summary>
      /// 执行存储过程
      /// </summary>
      /// <param name="storedProcName">存储过程名</param>
      /// <param name="parameters">存储过程参数</param>
      /// <returns>SqlDataReader</returns>
      public   SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters )
      {
       SqlConnection connection = new SqlConnection(connectionString);
       SqlDataReader returnReader;
       connection.Open();
       SqlCommand command = BuildQueryCommand( connection,storedProcName, parameters );
       command.CommandType = CommandType.StoredProcedure;
       returnReader = command.ExecuteReader();    
       return returnReader;   
      }
      
      
      /// <summary>
      /// 执行存储过程
      /// </summary>
      /// <param name="storedProcName">存储过程名</param>
      /// <param name="parameters">存储过程参数</param>
      /// <param name="tableName">DataSet结果中的表名</param>
      /// <returns>DataSet</returns>
      public   DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName )
      {
       using (SqlConnection connection = new SqlConnection(connectionString))
       {
        DataSet dataSet = new DataSet();
        connection.Open();
        SqlDataAdapter sqlDA = new SqlDataAdapter();
        sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters );
        sqlDA.Fill( dataSet, tableName );
        connection.Close();
        return dataSet;

                  
       }
      }

      
      /// <summary>
      /// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)
      /// </summary>
      /// <param name="connection">数据库连接</param>
      /// <param name="storedProcName">存储过程名</param>
      /// <param name="parameters">存储过程参数</param>
      /// <returns>SqlCommand</returns>
      private   SqlCommand BuildQueryCommand(SqlConnection connection,string storedProcName, IDataParameter[] parameters)
      {   
       SqlCommand command = new SqlCommand( storedProcName, connection );
       command.CommandType = CommandType.StoredProcedure;
       foreach (SqlParameter parameter in parameters)
       {
        command.Parameters.Add( parameter );
       }
       return command;   
      }
      
      /// <summary>
      /// 执行存储过程,返回影响的行数  
      /// </summary>
      /// <param name="storedProcName">存储过程名</param>
      /// <param name="parameters">存储过程参数</param>
      /// <param name="rowsAffected">影响的行数</param>
      /// <returns></returns>
      public   int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected )
      {
       using (SqlConnection connection = new SqlConnection(connectionString))
       {
        int result;
        connection.Open();
        SqlCommand command = BuildIntCommand(connection,storedProcName, parameters );
        rowsAffected = command.ExecuteNonQuery();
        result = (int)command.Parameters["ReturnValue"].Value;
        //Connection.Close();
        return result;
       }
      }
      
      /// <summary>
      /// 创建 SqlCommand 对象实例(用来返回一个整数值) 
      /// </summary>
      /// <param name="storedProcName">存储过程名</param>
      /// <param name="parameters">存储过程参数</param>
      /// <returns>SqlCommand 对象实例</returns>
      private   SqlCommand BuildIntCommand(SqlConnection connection,string storedProcName, IDataParameter[] parameters)
      {
       SqlCommand command = BuildQueryCommand(connection,storedProcName, parameters );
       command.Parameters.Add( new SqlParameter ( "ReturnValue",
        SqlDbType.Int,4,ParameterDirection.ReturnValue,
        false,0,0,string.Empty,DataRowVersion.Default,null ));
       return command;
      }
      #endregion 


        }

    }

     ======================================

    顺便问一句:博客园里写文章时,工具栏上没有插入代码这个工具吗?我咋没看见呢,不会是没有吧?

     ======================================

    作者:wpf之家
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    laravel blog 一
    dede:channelartlist currentstyle高亮显示
    dede调用导航/幻灯
    rmp 安装LNMP环境
    无极分类之子孙树、父辈树
    创始人 密码
    mysql报错显示法文解决办法
    渐变色背景
    laravel sendmail
    工作流系统webservice服务
  • 原文地址:https://www.cnblogs.com/wpf123/p/2347403.html
Copyright © 2011-2022 走看看