C#數據庫幫助類SqlHelper

jopen 12年前發布 | 48K 次閱讀 C# .NET開發

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.OleDb;
using System.Data;
using System.Configuration;
using System.Data.Sql;
using System.Data.SqlClient;
namespace DAL
{
    public class SqlHelper
    {
        public static string connstring = ConfigurationManager.ConnectionStrings["zzconstr"].ConnectionString;
        //public static string connstring = "Data Source=ZZ-PC;Initial Catalog=IPTVDB;User ID=sa;Password=sa";
        /// <summary>
        /// 執行非查詢,返回受影響行數,異常返回-1;
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="type"></param>
        /// <param name="pars"></param>
        /// <returns></returns>
        public static bool ExceNonQuery(string sql, CommandType type, IDataParameter[] pars)
        {

        SqlConnection con = new SqlConnection(connstring);
        SqlCommand com = new SqlCommand(sql, con);

        if (pars != null && pars.Length > 0)
        {
            foreach (SqlParameter pp in pars)//把參數集全部加進去
                com.Parameters.Add(pp);
        }
        try
        {
            con.Open();
            int t = com.ExecuteNonQuery();
            if (t > 0)
            {
                return true;
            }
            else
                return false;
        }
        catch (Exception e) { return false; }
        finally
        {
            com.Parameters.Clear();
            com.Dispose();
            con.Close();
        }
    }
    /// <summary>
    /// 執行sql語句的查詢,返回查詢的數量。異常返回-1.
    /// </summary>
    /// <param name="sql"></param>
    /// <param name="type"></param>
    /// <param name="pars"></param>
    /// <returns></returns>
    public static int ExceQuery(string sql, CommandType type, IDataParameter[] pars)
    {
        SqlConnection con = new SqlConnection(connstring);
        SqlCommand com = new SqlCommand(sql, con);
        com.CommandType = type;
        if (pars != null && pars.Length > 0)
        {
            foreach (SqlParameter pp in pars)//把參數集全部加進去
                com.Parameters.Add(pp);
        }
        try
        {
            con.Open();
            if (com.ExecuteScalar() != null)//查詢結果為空時返回0
            {
                int t = (int)com.ExecuteScalar();

                return t;
            }
            else
                return -1;
        }
        catch (Exception e) { return -1; }
        finally
        {
            com.Parameters.Clear();
            com.Dispose();
            con.Close();
        }
    }
    /// <summary>
    /// 執行查詢,返回一個數據集
    /// </summary>
    /// <param name="sql"></param>
    /// <param name="pars"></param>
    /// <returns></returns>
    public static DataSet ExcueReturnDataset(string sql, IDataParameter[] pars)
    {
        SqlConnection con = new SqlConnection(connstring);
        DataSet set = new DataSet();
        SqlCommand com = new SqlCommand(sql, con);
        if (pars != null && pars.Length > 0)
        {
            foreach (SqlParameter pp in pars)//把參數集全部加進去
                com.Parameters.Add(pp);
        }

        SqlDataAdapter adpter = new SqlDataAdapter(com);

        try
        {
            set.Clear();
            adpter.Fill(set);
            return set;
        }
        catch (Exception ex) { return null; }
        finally {
            com.Parameters.Clear();
            com.Dispose();
            con.Close(); 
        }

    }
    public static DataSet ExcueReturnDataset(string sql,CommandType type,IDataParameter[] pars)
    {
        SqlConnection con = new SqlConnection(connstring);
        DataSet set = new DataSet();
        SqlCommand com = new SqlCommand(sql, con);
        com.CommandType = type;
        if (pars != null && pars.Length > 0)
        {
            foreach (SqlParameter pp in pars)//把參數集全部加進去
                com.Parameters.Add(pp);
        }

        SqlDataAdapter adpter = new SqlDataAdapter(com);

        try
        {
            set.Clear();
            adpter.Fill(set);
            return set;
        }
        catch (Exception ex) { return null; }
        finally
        {
            com.Parameters.Clear();
            com.Dispose();
            con.Close();
        }

    }
    public static IDataReader ExcueReturnDataReader(string sql, IDataParameter[] pars)
    {
        SqlConnection con = new SqlConnection(connstring);
        SqlCommand com = new SqlCommand(sql, con);

        SqlDataReader reader;
        if (pars != null && pars.Length > 0)
        {
            foreach (SqlParameter pp in pars)//把參數集全部加進去
                com.Parameters.Add(pp);
        }
        try
        {
            con.Open();
            reader = com.ExecuteReader(CommandBehavior.CloseConnection);
            return reader;
        }
        catch (Exception ex)
        { 

            return null; 
        }
        finally {
            com.Parameters.Clear();
            com.Dispose();
            //con.Close();
        }

    }
    /// <summary>
    /// 執行存儲過程,返回影響的行數      
    /// </summary>
    /// <param name="storedProcName">存儲過程名</param>
    /// <param name="parameters">存儲過程參數</param>
    /// <param name="rowsAffected">影響的行數</param>
    /// <returns></returns>
    public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
    {
        using (SqlConnection connection = new SqlConnection(connstring))
        {
            int result;
            connection.Open();
            SqlCommand command = new SqlCommand(storedProcName, connection);
            command.CommandType = CommandType.StoredProcedure;
            if (parameters!= null && parameters.Length > 0)
            {
                foreach (SqlParameter pp in parameters)//把參數集全部加進去
                    command.Parameters.Add(pp);
            }
            command.Parameters.Add("@return","").Direction = ParameterDirection.ReturnValue;
            rowsAffected = command.ExecuteNonQuery();
            result = (int)command.Parameters["@return"].Value;
            connection.Close();
            return result;
        }
    }
    /// <summary>
    /// 執行存儲過程
    /// </summary>
    /// <param name="storedProcName">存儲過程名</param>
    /// <param name="parameters">存儲過程參數</param>
    /// <param name="tableName">DataSet結果中的表名</param>
    /// <returns>DataSet</returns>
    public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
    {
        using (SqlConnection connection = new SqlConnection(connstring))
        {
            DataSet dataSet = new DataSet();
            SqlCommand com = new SqlCommand(storedProcName, connection);
            com.CommandType =CommandType.StoredProcedure;
            if (parameters != null && parameters.Length > 0)
            {
                foreach (SqlParameter pp in parameters)//把參數集全部加進去
                    com.Parameters.Add(pp);
            }

            SqlDataAdapter adpter = new SqlDataAdapter(com);
            adpter.Fill(dataSet, tableName);
            return dataSet;
        }
    }
    /// <summary>
    /// 執行查詢語句,返回DataSet
    /// </summary>
    /// <param name="SQLString">查詢語句</param>
    /// <returns>DataSet</returns>
    public DataSet Query(string SQLString)
    {
        using (SqlConnection connection = new SqlConnection(connstring))
        {
            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;
        }
    }
}

}</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!