?? database.cs
字號(hào):
using System;
using System.Data;
using System.Collections;
using System.Data.SqlClient;
using System.Configuration;
namespace MyLibrary.DataAccessLayer
{
// 數(shù)據(jù)庫(kù)接口類
public class DataBase
{
//私有變量,數(shù)據(jù)庫(kù)連接
protected SqlConnection Connection;
protected string ConnectionString;
//構(gòu)造函數(shù)
public DataBase()
{
ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
}
//保護(hù)方法,打開數(shù)據(jù)庫(kù)連接
private void Open()
{
//判斷數(shù)據(jù)庫(kù)連接是否存在
if (Connection == null)
{
//不存在,新建并打開
Connection = new SqlConnection(ConnectionString);
Connection.Open();
}
else
{
//存在,判斷是否處于關(guān)閉狀態(tài)
if (Connection.State.Equals(ConnectionState.Closed))
Connection.Open(); //連接處于關(guān)閉狀態(tài),重新打開
}
}
//公有方法,關(guān)閉數(shù)據(jù)庫(kù)連接
public void Close()
{
if (Connection.State.Equals(ConnectionState.Open))
{
Connection.Close(); //連接處于打開狀態(tài),關(guān)閉連接
}
}
/// <summary>
/// 析構(gòu)函數(shù),釋放非托管資源
/// </summary>
~DataBase()
{
try
{
if (Connection != null)
Connection.Close();
}
catch{}
try
{
Dispose();
}
catch{}
}
//公有方法,釋放資源
public void Dispose()
{
if (Connection != null) // 確保連接被關(guān)閉
{
Connection.Dispose();
Connection = null;
}
}
//公有方法,根據(jù)Sql語(yǔ)句,返回是否查詢到記錄
public bool GetRecord(string XSqlString)
{
Open();
SqlDataAdapter adapter = new SqlDataAdapter(XSqlString, Connection);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
Close();
if (dataset.Tables[0].Rows.Count > 0)
{
return true;
}
else
{
return false;
}
}
//公有方法,返回Sql語(yǔ)句獲得的數(shù)據(jù)值
//SqlString的格式:select count(*) from XXX where ...
// select max(XXX) from YYY where ...
public int GetRecordCount(string XSqlString)
{
string SCount;
Open();
SqlCommand Cmd = new SqlCommand(XSqlString,Connection);
SCount = Cmd.ExecuteScalar().ToString().Trim();
if (SCount=="")
SCount="0";
Close();
return Convert.ToInt32(SCount);
}
//公有方法,根據(jù)XWhere更新數(shù)據(jù)表XTableName中的某些紀(jì)錄
//XTableName--表名
//XHT--哈希表,鍵為字段名,值為字段值
public DataSet AdvancedSearch(string XTableName, Hashtable XHT)
{
int Count = 0;
string Fields = "";
foreach(DictionaryEntry Item in XHT)
{
if (Count != 0)
{
Fields += " and ";
}
Fields += Item.Key.ToString();
Fields += " like '%";
Fields += Item.Value.ToString();
Fields += "%'";
Count++;
}
Fields += " ";
string SqlString = "select * from " + XTableName + " where " + Fields;
Open();
SqlDataAdapter Adapter = new SqlDataAdapter(SqlString, Connection);
DataSet Ds = new DataSet();
Adapter.Fill(Ds);
Close();
return Ds;
}
//私有方法,獲得一個(gè)用來調(diào)用存儲(chǔ)過程的SqlCommand
//輸入:
// ProcName - 存儲(chǔ)過程名
// Params - 用來調(diào)用存儲(chǔ)過程的參數(shù)表
private SqlCommand CreateCommand(string ProcName, SqlParameter[] Prams)
{
Open();
SqlCommand Cmd = new SqlCommand(ProcName, Connection);
Cmd.CommandType = CommandType.StoredProcedure;
if (Prams != null)
{
foreach (SqlParameter Parameter in Prams)
Cmd.Parameters.Add(Parameter);
}
return Cmd;
}
//公有方法,實(shí)例化一個(gè)用于調(diào)用存儲(chǔ)過程的參數(shù)
//輸入:
// ParamName - 參數(shù)名稱
// DbType - 參數(shù)類型
// Size - 參數(shù)大小
// Direction - 傳遞方向
// Value - 值
public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
{
SqlParameter Param;
if(Size > 0)
Param = new SqlParameter(ParamName, DbType, Size);
else Param = new SqlParameter(ParamName, DbType);
Param.Direction = Direction;
if (Value != null)
Param.Value = Value;
return Param;
}
//公有方法,實(shí)例化一個(gè)用于調(diào)用存儲(chǔ)過程的輸入?yún)?shù)
//輸入:
// ParamName - 參數(shù)名稱
// DbType - 參數(shù)類型
// Size - 參數(shù)大小
// Value - 值
public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)
{
return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
}
//公有方法,調(diào)用存儲(chǔ)過程(不帶參數(shù))
//輸入:
// ProcName存儲(chǔ)過程名
//輸出:
// 對(duì)Update、Insert、Delete操作返回影響到的行數(shù),其他情況為-1
public int RunProc(string ProcName)
{
int Count = -1;
SqlCommand Cmd = CreateCommand(ProcName, null);
Count = Cmd.ExecuteNonQuery();
Close();
return Count;
}
//公有方法,調(diào)用存儲(chǔ)過程(帶參數(shù))
//輸入:
// ProcName - 存儲(chǔ)過程名
// Params - 用來調(diào)用存儲(chǔ)過程的參數(shù)表
//輸出:
// 對(duì)Update、Insert、Delete操作返回影響到的行數(shù),其他情況為-1
public int RunProc(string ProcName, SqlParameter[] Params)
{
int Count = -1;
SqlCommand Cmd = CreateCommand(ProcName, Params);
Count = Cmd.ExecuteNonQuery();
Close();
return Count;
}
//公有方法,調(diào)用存儲(chǔ)過程(不帶參數(shù))
//輸入:
// ProcName存儲(chǔ)過程名
//輸出:
// 將執(zhí)行結(jié)果以SqlDataReader返回
//注意:使用后主意調(diào)用SqlDataReader.Close()方法
public SqlDataReader RunProcGetReader(string ProcName)
{
SqlCommand Cmd = CreateCommand(ProcName, null);
return Cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
//公有方法,調(diào)用存儲(chǔ)過程(帶參數(shù))
//輸入:
// ProcName - 存儲(chǔ)過程名
// Params - 存儲(chǔ)過程需要的參數(shù)
//輸出:
// 將執(zhí)行結(jié)果以SqlDataReader返回
//注意:使用后主意調(diào)用SqlDataReader.Close()方法
public SqlDataReader RunProcGetReader(string ProcName, SqlParameter[] Params)
{
SqlCommand Cmd = CreateCommand(ProcName, Params);
return Cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
//公有方法,調(diào)用存儲(chǔ)過程(帶參數(shù))
//輸入:
// ProcName - 存儲(chǔ)過程名
// Params - 存儲(chǔ)過程需要的參數(shù)
//輸出:
// 將執(zhí)行結(jié)果以SqlDataReader返回
//注意:使用后主意調(diào)用SqlDataReader.Close()方法
public int RunProcGetCount(string ProcName, SqlParameter[] Params)
{
SqlCommand Cmd = CreateCommand(ProcName, Params);
string SCount;
SCount = Cmd.ExecuteScalar().ToString().Trim();
if (SCount == "")
SCount = "0";
Close();
return Convert.ToInt32(SCount);
}
//公有方法,調(diào)用存儲(chǔ)過程(不帶參數(shù))
//輸入:
// ProcName存儲(chǔ)過程名
//輸出:
// 將執(zhí)行結(jié)果以DataSet返回
public DataSet GetDataSet(string ProcName)
{
Open();
SqlDataAdapter adapter = new SqlDataAdapter(ProcName, Connection);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
Close();
return dataset;
}
//公有方法,調(diào)用存儲(chǔ)過程(不帶參數(shù))
//輸入:
// ProcName存儲(chǔ)過程名
//輸出:
// 將執(zhí)行結(jié)果以DataSet返回
public DataSet GetDataSet(string ProcName, SqlParameter[] Params)
{
Open();
SqlCommand Cmd = CreateCommand(ProcName, Params);
SqlDataAdapter adapter = new SqlDataAdapter(Cmd);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
Close();
return dataset;
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -