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);
}