C#中數據連接讀取添加刪除操作

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using AHUT_TetWebERP;
/// <summary>
/// DataBase 的摘要說明
/// </summary>
public class DataBase
{
    SqlConnection conn = null;
    SqlDataAdapter adapter = null;
    SqlCommand command = null;
    SqlDataReader reader = null;
    DataSet ds = null;
public DataBase()
{
  //
  // TODO: 在此處添加構造函數邏輯
  //
}
    /// <summary>
    /// 數據庫連接
    /// </summary>
    public void connection()
    {
        conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BWConnectionString"].ToString());
        conn.Open();
    }
    /// <summary>
    /// 關閉數據庫連接
    /// </summary>
    public void CloseConnection()
    {
        if (conn != null)
            conn.Close();
    }
    /// <summary>
    /// 返回數據記錄集DataSet
    /// <param name="sql">適配器的數據查詢語句</param>
    /// </summary>
    public DataSet returnRecordset(string sql)
    {
        try
        {
            adapter = new SqlDataAdapter(sql, conn);
            ds = new DataSet();
            adapter.Fill(ds);
        }
        catch(Exception ex)
        {
            SystemError.SystemLog(ex.Message);
        }
        return ds;
    }
    /// <summary>
    /// 判斷是否存在滿足SQL查詢條件的記錄
    /// <param name="sql">數據查詢語句</param>
    /// </summary>
    public bool ExtenRow(string sql)
    {
        command = new SqlCommand(sql, conn);
        try
        {
            reader = command.ExecuteReader();
            if (reader.Read())
            {
                reader.Close();
                reader.Dispose();
                return true;
            }
            else
            {
                reader.Close();
                reader.Dispose();
                return false;
            }
        }
        catch
        {
            return false;
        }
    }
    /// <summary>
    /// 執行操作數據庫的SQL語句
    /// <param name="sql">數據操作語句</param>
    /// </summary>
    public void SqlOperate(string sql)
    {
        command = new SqlCommand(sql, conn);
        try
        {
            command.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            SystemError.SystemLog(ex.Message);
        }
    }
/// <summary>
/// 僅執行command操作
/// </summary>
/// <param name="sql"></param>
    public void SqlCommd(string sql)
    {
        command = new SqlCommand(sql, conn);
    }

    public void getReader(ref SqlDataReader reader, string sql)
    {
        command = new SqlCommand(sql, conn);
        reader = command.ExecuteReader();
    }
    /// <summary>
    /// 銷燬SqlDateReader數據
    /// </summary>
    /// <param name="reader">需要銷燬的SqlDateReader數據對象</param>
    public void DisposeReader(ref SqlDataReader reader)
    {
        reader.Close();
        reader.Dispose();
    }
    /// <summary>
    /// 執行不帶參數的存儲過程返回一個整數
    /// </summary>
    /// <param name="procName">存儲過程的名稱</param>
    /// <returns>返回存儲過程的返回值</returns>
    public int ExcuteProc(string procName)
    {
        command = CreateCommand(procName, null);
        try
        {
            command.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            SystemError.SystemLog(ex.Message);                      //執行錯誤時寫入日誌
        }
        finally
        {
            conn.Close();
        }
        return (int)command.Parameters["ReturnValue"].Value;   //返回存儲過程的返回值
    }
    /// <summary>
    /// 執行帶參數的存儲過程返回一個整數
    /// </summary>
    /// <param name="procName">存儲過程的名稱</param>
    /// <param name="procName">存儲過程所需參數</param>
    /// <returns>返回存儲過程的返回值</returns>
    public int ExcuteProc(string procName,SqlParameter[] prams)
    {
        command = CreateCommand(procName, prams);
        try
        {
            command.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            SystemError.SystemLog(ex.Message);                      //執行錯誤時寫入日誌
        }
        finally
        {
            conn.Close();
        }
         return (int)command.Parameters["ReturnValue"].Value;   //返回存儲過程的返回值
    }
    /// <summary>
    /// 執行不帶參數的存儲過程,可保存從數據庫中獲取的結果
    /// </summary>
    /// <param name="procName">存儲過程的名稱</param>
    /// <returns>返回存儲過程的返回值</returns>
    public void ExcuteProc(string procName, out SqlDataReader reader)
    {
        command = CreateCommand(procName, null);
        reader = command.ExecuteReader(CommandBehavior.CloseConnection);
    }
    /// <summary>
    /// 執行帶參數的存儲過程,可保存從數據庫中獲取的結果
    /// </summary>
    /// <param name="procName">存儲過程的名稱</param>
    /// <param name="procName">存儲過程所需參數</param>
    public void ExcuteProc(string procName, SqlParameter[] prams, out SqlDataReader reader)
    {
        command = CreateCommand(procName, prams);
        reader = command.ExecuteReader(CommandBehavior.CloseConnection);
    }
    /// <summary>
    /// 創建一個SqlCommand對象以此來執行存儲過程
    /// </summary>
    /// <param name="procName">存儲過程名稱</param>
    /// <param name="prams">存儲過程所需參數</param>
    /// <return>返回SqlCommand對象</return>
    private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
    {
        connection();
        command = new SqlCommand(procName, conn);
        command.CommandType = CommandType.StoredProcedure;
        //-------------依次將參數傳入存儲過程
        if (prams != null)
        {
            foreach (SqlParameter parameter in prams)
            {
                command.Parameters.Add(parameter);
            }
        }
        //--------------------------------------
        command.Parameters.Add(
            new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null));
        return command;
    }

    /// <summary>
    /// 生成存儲過程參數
    /// </summary>
    /// <param name="ParamName">存儲過程名稱</param>
    /// <param name="DbType">參數類型</param>
    /// <param name="Size">參數大小</param>
    /// <param name="Direction">參數方向</param>
    /// <param name="Value">參數值</param>
    /// <return>新的 parameter 對象</return>
    public SqlParameter CreateParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
    {
        SqlParameter param;
        if (Size > 0)                           //根據參數Size大小值判斷是否使用Size參數,大於0時使用,否則不使用
        {
            param = new SqlParameter(ParamName, DbType, Size);
        }
        else
        {
            param = new SqlParameter(ParamName, DbType);
        }
        param.Direction = Direction;            //創建輸出類型的參數
        if (!(Direction == ParameterDirection.Output && Value == null))
        {
            param.Value = Value;
        }
        return param;
    }
    /// <summary>
    /// 傳入輸入參數
    /// </summary>
    /// <param name="ParamName">存儲過程名稱</param>
    /// <param name="DbType">參數類型</param>
    /// <param name="Size">參數大小</param>
    /// <param name="Value">參數值</param>
    /// <return>新的 parameter 對象</return>
    public SqlParameter CreateInParam(string ParamName, SqlDbType DbType, int Size, object Value)
    {
        return CreateParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
    }
    /// <summary>
    /// 傳入返回值參數
    /// </summary>
    /// <param name="ParamName">存儲過程名稱</param>
    /// <param name="DbType">參數類型</param>
    /// <param name="Size">參數大小</param>
    /// <return>新的 parameter 對象</return>
    public SqlParameter CreateOutParam(string ParamName, SqlDbType DbType, int Size)
    {
        return CreateParam(ParamName, DbType, Size, ParameterDirection.Output, null);
    }
    /// <summary>
    /// 傳入返回值參數
    /// </summary>
    /// <param name="ParamName">存儲過程名稱</param>
    /// <param name="DbType">參數類型</param>
    /// <param name="Size">參數大小</param>
    /// <return>新的 parameter 對象</return>
    public SqlParameter CreateReturnParam(string ParamName, SqlDbType DbType, int Size)
    {
        return CreateParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
    }
發佈了286 篇原創文章 · 獲贊 16 · 訪問量 88萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章