模組化資料庫的存取
對資料庫的操作模組化,日後有資料庫存取的需求只要參考該組件,然後引用方法就可以取回資料庫內的資料了。
DAL 說明文件,點我下載。
原始碼:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using SecurityData;
namespace DAL
{
/// <summary>
/// MS-SQL 資料庫公用存取類別
/// </summary>
public class SQLDB
{
#region 內建變數
/// <summary>
/// 資料庫主機位址
/// </summary>
internal static string __DBServerIP = "127.0.0.1";
/// <summary>
/// 資料庫名稱
/// </summary>
internal static string __DBName = "NorthWind";
/// <summary>
/// 資料庫登入帳號
/// </summary>
internal static string __DBLoginID = "sa";
/// <summary>
/// 資料庫登入密碼
/// </summary>
internal static string __DBLoginPwd = "password";
#endregion
#region 屬性設定
/// <summary>
/// 讀取/設定 資料庫主機位址
/// </summary>
/// <remarks>讀取或是設定資料庫主機的 IP 位址。</remarks>
/// <value>IP 位址</value>
public string DBServerIP
{
get
{
return __DBServerIP;
}
set
{
__DBServerIP = value;
}
}
/// <summary>
/// 讀取/設定 資料庫名稱
/// </summary>
/// <remarks>讀取或是設定要連線的資料庫名稱。</remarks>
/// <value>資料庫名稱</value>
public string DBName
{
get
{
return __DBName;
}
set
{
__DBName = value;
}
}
/// <summary>
/// 設定 資料庫登入帳號
/// </summary>
/// <remarks>讀取或是設定連線所要使用的帳號名稱。</remarks>
/// <value>連線帳號名稱</value>
public string SetDBLoginID
{
set
{
__DBLoginID = value;
}
}
/// <summary>
/// 設定 資料庫登入密碼
/// </summary>
/// <remarks>讀取或是設定連線帳號所使用密碼。</remarks>
/// <value>連線帳號的密碼</value>
public string SetDBLoginPwd
{
set
{
__DBLoginPwd = value;
}
}
#endregion
#region 初始化資料庫公用元件庫
/// <summary>
/// 初始化資料庫公用元件庫
/// </summary>
/// <remarks>依照預設值初始化元件庫</remarks>
public SQLDB()
{
LoadDefaultSetting();
}
/// <summary>
/// 載入預設值
/// </summary>
private void LoadDefaultSetting()
{
__DBServerIP = Config.GetDBServerIP;
__DBName = Config.GetDBName;
__DBLoginID = Config.GetDBLoginID;
__DBLoginPwd = Config.GetDBLoginPwd;
}
/// <summary>
/// 依指定IP位址、資料庫名稱與登入帳號和密碼,來初始化資料庫公用元件庫。
/// </summary>
/// <param name="DataBaseServerIP">資料庫主機位址</param>
/// <param name="DataBaseName">資料庫名稱</param>
/// <param name="DataBaseLoginID">資料庫登入帳號</param>
/// <param name="DataBaseLoginPassword">資料庫登入密碼</param>
/// <remarks>初始化元件庫,並同時設定資料庫主機位址、連線資料庫名稱、登入帳號與登入密碼。</remarks>
public SQLDB(string DataBaseServerIP, string DataBaseName, string DataBaseLoginID, string DataBaseLoginPassword)
{
__DBServerIP = DataBaseServerIP.Trim();
__DBName = DataBaseName.Trim();
__DBLoginID = DataBaseLoginID.Trim();
__DBLoginPwd = DataBaseLoginPassword.Trim();
}
/// <summary>
/// 依指定IP位址、資料庫名稱,來初始化資料庫公用元件庫。
/// </summary>
/// <param name="DataBaseServerIP">資料庫主機位址</param>
/// <param name="DataBaseName">資料庫名稱</param>
/// <remarks>初始化元件庫,並同時設定資料庫主機位址、連線資料庫名稱。</remarks>
public SQLDB(string DataBaseServerIP, string DataBaseName)
{
__DBServerIP = DataBaseServerIP.Trim();
__DBName = DataBaseName.Trim();
}
/// <summary>
/// 依指定資料庫名稱,來初始化資料庫公用元件庫。
/// </summary>
/// <param name="DataBaseName">資料庫名稱</param>
/// <remarks>初始化元件庫,並設定連線資料庫名稱。</remarks>
public SQLDB(string DataBaseName)
{
__DBName = DataBaseName.Trim();
}
#endregion
#region 取得 Connection 物件
/// <summary>
/// 取得 SQL 連線物件
/// </summary>
/// <remarks>使用系統預設連線參數,取回 SQL 連線物件 SqlConnection。</remarks>
/// <returns>連線物件</returns>
public SqlConnection DBConn()
{
return DBConn(__DBServerIP, __DBName, __DBLoginID, __DBLoginPwd);
}
/// <summary>
/// 指定資料庫名稱,並取得 SQL 連線物件
/// </summary>
/// <param name="DatabaseName">要連線的資料庫名稱</param>
/// <remarks>指定連線資料庫,並取回 SQL 連線物件 SqlConnection。</remarks>
/// <returns>連線物件</returns>
public SqlConnection DBConn(string DatabaseName)
{
return DBConn(__DBServerIP, DatabaseName, __DBLoginID, __DBLoginPwd);
}
/// <summary>
/// 指定主機IP位址、資料庫名稱,並取得 SQL 連線物件
/// </summary>
/// <param name="ServerName">伺服器名稱/IP位址</param>
/// <param name="DatabaseName">要連線的資料庫名稱</param>
/// <remarks>指定資料庫主機 IP 位址與連線資料庫,並取回 SQL 連線物件 SqlConnection。</remarks>
/// <returns>連線物件</returns>
public SqlConnection DBConn(string ServerName, string DatabaseName)
{
return DBConn(ServerName, DatabaseName, __DBLoginID, __DBLoginPwd);
}
/// <summary>
/// 指定主機IP位址、資料庫名稱與登入帳號和密碼,並取得 SQL 連線物件
/// </summary>
/// <param name="ServerName">伺服器名稱/IP位址</param>
/// <param name="DatabaseName">要連線的資料庫名稱</param>
/// <param name="LoginID">登入帳號</param>
/// <param name="LoginPwd">登入密碼</param>
/// <remarks>指定資料庫主機 IP 位址、連線資料庫、登入帳號和密碼,並取回 SQL 連線物件 SqlConnection。</remarks>
/// <returns>連線物件</returns>
public SqlConnection DBConn(string ServerName, string DatabaseName, string LoginID, string LoginPwd)
{
SqlConnection conSQL = new SqlConnection();
conSQL.ConnectionString = string.Format("Server={0};Database={1};Integrated Security=False;User ID={2};Password={3}", new object[] { ServerName, DatabaseName, LoginID, LoginPwd });
try
{
conSQL.Open();
return conSQL;
}
catch
{
return null;
}
}
#endregion
#region 取得 Command 物件
/// <summary>
/// 指定 SQL 指令字串來取得 SQL 命令物件
/// </summary>
/// <param name="DBConnection">SQL 連線物件</param>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <remarks>依 SQL 查詢字串,取回 SQL 命令物件 (SqlCommand)。</remarks>
/// <returns>命令物件</returns>
public SqlCommand DBCommand(SqlConnection DBConnection, string DBCmdText)
{
return DBCommand(DBConnection, DBCmdText, null, CommandType.Text);
}
/// <summary>
/// 指定 SQL 指令字串來取得 SQL 命令物件,並輸出交易物件
/// </summary>
/// <param name="DBConnection">SQL 連線物件</param>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBTrans">SQL 交易物件</param>
/// <remarks>依 SQL 查詢字串,取回 SQL 命令物件 (SqlCommand)。</remarks>
/// <returns>命令物件與輸出 SQL 交易物件</returns>
public SqlCommand DBCommand(SqlConnection DBConnection, string DBCmdText, out SqlTransaction DBTrans)
{
return DBCommand(DBConnection, DBCmdText, null, CommandType.Text, out DBTrans);
}
/// <summary>
/// 指定 SQL 指令字串,與指令集的模式來取得 SQL 命令物件
/// </summary>
/// <param name="DBConnection">SQL 連線物件</param>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdType">SQL 指令集模式</param>
/// <remarks>依 SQL 查詢字串,取回 SQL 命令物件 (SqlCommand)。</remarks>
/// <returns>命令物件</returns>
public SqlCommand DBCommand(SqlConnection DBConnection, string DBCmdText, CommandType DBCmdType)
{
return DBCommand(DBConnection, DBCmdText, null, DBCmdType);
}
/// <summary>
/// 指定 SQL 指令字串,與指令集的模式來取得 SQL 命令物件,並輸出交易物件
/// </summary>
/// <param name="DBConnection">SQL 連線物件</param>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdType">SQL 指令集模式</param>
/// <param name="DBTrans">SQL 交易物件</param>
/// <remarks>依 SQL 查詢字串,取回 SQL 命令物件 (SqlCommand)。</remarks>
/// <returns>命令物件與輸出 SQL 交易物件</returns>
public SqlCommand DBCommand(SqlConnection DBConnection, string DBCmdText, CommandType DBCmdType, out SqlTransaction DBTrans)
{
return DBCommand(DBConnection, DBCmdText, null, DBCmdType, out DBTrans);
}
/// <summary>
/// 指定 SQL 指令字串,與參數集來取得 SQL 命令物件
/// </summary>
/// <param name="DBConnection">SQL 連線物件</param>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdParameters">SQL 指令集的參數</param>
/// <remarks>依 SQL 查詢字串與參數集,取回 SQL 命令物件 (SqlCommand)。</remarks>
/// <returns>命令物件</returns>
public SqlCommand DBCommand(SqlConnection DBConnection, string DBCmdText, SqlParameterCollection DBCmdParameters)
{
return DBCommand(DBConnection, DBCmdText, DBCmdParameters, CommandType.Text);
}
/// <summary>
/// 指定 SQL 指令字串,與參數集來取得 SQL 命令物件,並輸出交易物件
/// </summary>
/// <param name="DBConnection">SQL 連線物件</param>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdParameters">SQL 指令集的參數</param>
/// <param name="DBTrans">SQL 交易物件</param>
/// <remarks>依 SQL 查詢字串與參數集,取回 SQL 命令物件 (SqlCommand)。</remarks>
/// <returns>命令物件與輸出 SQL 交易物件</returns>
public SqlCommand DBCommand(SqlConnection DBConnection, string DBCmdText, SqlParameterCollection DBCmdParameters, out SqlTransaction DBTrans)
{
return DBCommand(DBConnection, DBCmdText, DBCmdParameters, CommandType.Text, out DBTrans);
}
/// <summary>
/// 指定 SQL 指令字串和參數,與指令集的模式來取得 SQL 命令物件
/// </summary>
/// <param name="DBConnection">SQL 連線物件</param>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdParameters">SQL 指令集的參數</param>
/// <param name="DBCmdType">SQL 指令集模式</param>
/// <remarks>依 SQL 查詢字串與參數集,取回 SQL 命令物件 (SqlCommand)。</remarks>
/// <returns>命令物件</returns>
public SqlCommand DBCommand(SqlConnection DBConnection, string DBCmdText, SqlParameterCollection DBCmdParameters, CommandType DBCmdType)
{
SqlCommand cmdSQL = new SqlCommand();
try
{
cmdSQL.Connection = DBConnection;
cmdSQL.CommandType = DBCmdType;
cmdSQL.CommandText = DBCmdText;
if (DBCmdParameters == null) return cmdSQL;
cmdSQL.Parameters.Clear();
foreach (SqlParameter tmpPara in DBCmdParameters)
{
cmdSQL.Parameters.Add(tmpPara.ParameterName, tmpPara.SqlDbType).Value = tmpPara.Value;
}
return cmdSQL;
}
catch
{
return null;
}
}
/// <summary>
/// 指定 SQL 指令字串和參數,與指令集的模式來取得 SQL 命令物件,並輸出交易物件
/// </summary>
/// <param name="DBConnection">SQL 連線物件</param>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdParameters">SQL 指令集的參數</param>
/// <param name="DBCmdType">SQL 指令集模式</param>
/// <param name="DBTrans">SQL 交易物件</param>
/// <remarks>依 SQL 查詢字串與參數集,取回 SQL 命令物件 (SqlCommand)。</remarks>
/// <returns>命令物件與輸出 SQL 交易物件</returns>
public SqlCommand DBCommand(SqlConnection DBConnection, string DBCmdText, SqlParameterCollection DBCmdParameters, CommandType DBCmdType, out SqlTransaction DBTrans)
{
SqlCommand cmdSQL = new SqlCommand();
try
{
cmdSQL.Connection = DBConnection;
DBTrans = DBConnection.BeginTransaction();
cmdSQL.CommandType = DBCmdType;
cmdSQL.CommandText = DBCmdText;
cmdSQL.Transaction = DBTrans;
if (DBCmdParameters == null) return cmdSQL;
cmdSQL.Parameters.Clear();
foreach (SqlParameter tmpPara in DBCmdParameters)
{
cmdSQL.Parameters.Add(tmpPara.ParameterName, tmpPara.SqlDbType).Value = tmpPara.Value;
}
return cmdSQL;
}
catch
{
DBTrans = null;
return null;
}
}
#endregion
#region 取得 Dataset 資料
/// <summary>
/// 使用 SQL 命令物件來取得資料集(DataSet)
/// </summary>
/// <param name="DBCommands">SQL 命令物件</param>
/// <remarks>依 SQL 命令物件,取回查詢資料並存入資料集。</remarks>
/// <returns>查詢資料集</returns>
public DataSet GetDataSet(SqlCommand DBCommands)
{
return GetDataSet(DBCommands, "", "");
}
/// <summary>
/// 使用 SQL 命令物件來取得資料集(DataSet),並設定資料集的名稱
/// </summary>
/// <param name="DBCommands">SQL 命令物件</param>
/// <param name="DatasetName">定義資料集名稱</param>
/// <remarks>依 SQL 命令物件,取回查詢資料並存入資料集。</remarks>
/// <returns>查詢資料集</returns>
public DataSet GetDataSet(SqlCommand DBCommands, string DatasetName)
{
return GetDataSet(DBCommands, DatasetName, "");
}
/// <summary>
/// 使用 SQL 命令物件來取得資料集(DataSet),並設定資料集的名稱與命名空間
/// </summary>
/// <param name="DBCommands">SQL 命令物件</param>
/// <param name="DatasetName">定義資料集名稱</param>
/// <param name="DatasetNamespace">定義資料集命名空間</param>
/// <remarks>依 SQL 命令物件,取回查詢資料並存入資料集。</remarks>
/// <returns>查詢資料集</returns>
public DataSet GetDataSet(SqlCommand DBCommands, string DatasetName, string DatasetNamespace)
{
DataSet tmpDataset = new DataSet();
SqlDataAdapter sdaSQL = new SqlDataAdapter();
try
{
sdaSQL.SelectCommand = DBCommands;
sdaSQL.Fill(tmpDataset);
if (DatasetName.Trim() == "") DatasetName = "dataset1";
if (DatasetNamespace.Trim() == "") DatasetNamespace = "namespace1";
tmpDataset.DataSetName = DatasetName.Trim();
tmpDataset.Namespace = DatasetNamespace.Trim();
}
catch { }
sdaSQL.Dispose();
return tmpDataset;
}
/// <summary>
/// 使用 SQL 指令字串和參數集來取得資料集(DataSet)
/// </summary>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdParameters">SQL 指令集的參數</param>
/// <remarks>依 SQL 命令物件與參數集,取回查詢資料並存入資料集。</remarks>
/// <returns>查詢資料集</returns>
public DataSet GetDataSet(string DBCmdText, SqlParameterCollection DBCmdParameters)
{
return GetDataSet(DBCmdText, DBCmdParameters, CommandType.Text, "", "");
}
/// <summary>
/// 使用 SQL 指令字串和參數集,與指令集的模式來取得資料集(DataSet)
/// </summary>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdParameters">SQL 指令集的參數</param>
/// <param name="DBCmdType">SQL 指令集模式</param>
/// <remarks>依 SQL 命令物件與參數集,取回查詢資料並存入資料集。</remarks>
/// <returns>查詢資料集</returns>
public DataSet GetDataSet(string DBCmdText, SqlParameterCollection DBCmdParameters, CommandType DBCmdType)
{
return GetDataSet(DBCmdText, DBCmdParameters, DBCmdType, "", "");
}
/// <summary>
/// 使用 SQL 指令字串和參數集,與指令集的模式來取得資料集(DataSet),並設定資料集的名稱
/// </summary>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdParameters">SQL 指令集的參數</param>
/// <param name="DBCmdType">SQL 指令集模式</param>
/// <param name="DatasetName">定義資料集名稱</param>
/// <remarks>依 SQL 命令物件與參數集,取回查詢資料並存入資料集。</remarks>
/// <returns>查詢資料集</returns>
public DataSet GetDataSet(string DBCmdText, SqlParameterCollection DBCmdParameters, CommandType DBCmdType, string DatasetName)
{
return GetDataSet(DBCmdText, DBCmdParameters, DBCmdType, DatasetName, "");
}
/// <summary>
/// 使用 SQL 指令字串和參數集,與指令集的模式來取得資料集(DataSet),並設定資料集的名稱與命名空間
/// </summary>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdParameters">SQL 指令集的參數</param>
/// <param name="DBCmdType">SQL 指令集模式</param>
/// <param name="DatasetName">定義資料集名稱</param>
/// <param name="DatasetNamespace">定義資料集命名空間</param>
/// <remarks>依 SQL 命令物件與參數集,取回查詢資料並存入資料集。</remarks>
/// <returns>查詢資料集</returns>
public DataSet GetDataSet(string DBCmdText, SqlParameterCollection DBCmdParameters, CommandType DBCmdType, string DatasetName, string DatasetNamespace)
{
SqlCommand cmdSQL = new SqlCommand();
DataSet tmpDataSet = new DataSet();
try
{
cmdSQL = DBCommand(DBConn(), DBCmdText, DBCmdParameters, DBCmdType);
tmpDataSet = GetDataSet(cmdSQL, DatasetName, DatasetNamespace);
}
catch { }
cmdSQL.Dispose();
return tmpDataSet;
}
#endregion
#region 取得 Datatable 資料
/// <summary>
/// 使用 SQL 命令物件來取得資料表(DataTable)
/// </summary>
/// <param name="DBCommands">SQL 命令物件</param>
/// <remarks>依 SQL 命令物件,取回查詢資料並存入資料表。</remarks>
/// <returns>查詢資料表</returns>
public DataTable GetDataTable(SqlCommand DBCommands)
{
return GetDataTable(DBCommands, "");
}
/// <summary>
/// 使用 SQL 命令物件來取得資料表(DataTable),並設定資料表名稱
/// </summary>
/// <param name="DBCommands">SQL 命令物件</param>
/// <param name="TableName">定義資料表名稱</param>
/// <remarks>依 SQL 命令物件,取回查詢資料並存入資料表。</remarks>
/// <returns>查詢資料表</returns>
public DataTable GetDataTable(SqlCommand DBCommands, string TableName)
{
DataTable tmpDataTable = new DataTable();
SqlDataAdapter sdaSQL = new SqlDataAdapter();
try
{
sdaSQL.SelectCommand = DBCommands;
sdaSQL.Fill(tmpDataTable);
if (TableName.Trim() == "") TableName = "table1";
tmpDataTable.TableName = TableName.Trim();
}
catch
{
tmpDataTable = null;
}
finally
{
sdaSQL.Dispose();
}
return tmpDataTable;
}
/// <summary>
/// 使用 SQL 指令字串與參數集來取得資料表(DataTable)
/// </summary>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdParameters">SQL 指令集的參數</param>
/// <remarks>依 SQL 命令物件與參數集,取回查詢資料並存入資料表。</remarks>
/// <returns>查詢資料表</returns>
public DataTable GetDataTable(string DBCmdText, SqlParameterCollection DBCmdParameters)
{
return GetDataTable(DBCmdText, DBCmdParameters, CommandType.Text, "");
}
/// <summary>
/// 使用 SQL 指令字串、指令集模式與參數集來取得資料表(DataTable)
/// </summary>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdParameters">SQL 指令集的參數</param>
/// <param name="DBCmdType">SQL 指令集模式,預設值為 Text</param>
/// <remarks>依 SQL 命令物件與參數集,取回查詢資料並存入資料表。</remarks>
/// <returns>查詢資料表</returns>
public DataTable GetDataTable(string DBCmdText, SqlParameterCollection DBCmdParameters, CommandType DBCmdType)
{
return GetDataTable(DBCmdText, DBCmdParameters, CommandType.Text, "");
}
/// <summary>
/// 使用 SQL 指令字串、指令集模式與參數集來取得資料表(DataTable),並設定資料表名稱
/// </summary>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdParameters">SQL 指令集的參數</param>
/// <param name="DBCmdType">SQL 指令集模式,預設值為 Text</param>
/// <param name="TableName">定義資料表名稱</param>
/// <remarks>依 SQL 命令物件與參數集,取回查詢資料並存入資料表。</remarks>
/// <returns>查詢資料表</returns>
public DataTable GetDataTable(string DBCmdText, SqlParameterCollection DBCmdParameters, CommandType DBCmdType, string TableName)
{
SqlCommand cmdSQL = new SqlCommand();
DataTable tmpDataTable = new DataTable();
try
{
cmdSQL = DBCommand(DBConn(), DBCmdText, DBCmdParameters, DBCmdType);
tmpDataTable = GetDataTable(cmdSQL, TableName);
}
catch { }
cmdSQL.Dispose();
return tmpDataTable;
}
/// <summary>
/// 使用 SQL 指令字串來取得資料表(DataTable)
/// </summary>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <remarks>依 SQL 查詢指令字串,取回查詢資料並存入資料表。</remarks>
/// <returns>查詢資料表</returns>
public DataTable GetDataTable(string DBCmdText)
{
return GetDataTable(DBCmdText, CommandType.Text, "");
}
/// <summary>
/// 使用 SQL 指令字串與指令集模式,來取得資料表(DataTable)
/// </summary>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdType">SQL 指令集模式</param>
/// <remarks>依 SQL 查詢指令字串,取回查詢資料並存入資料表。</remarks>
/// <returns>查詢資料表</returns>
public DataTable GetDataTable(string DBCmdText, CommandType DBCmdType)
{
return GetDataTable(DBCmdText, DBCmdType, "");
}
/// <summary>
/// 使用 SQL 指令字串與指令集模式,來取得資料表(DataTable),並設定資料表名稱
/// </summary>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdType">SQL 指令集模式</param>
/// <param name="TableName">定義資料表名稱</param>
/// <remarks>依 SQL 查詢指令字串,取回查詢資料並存入資料表。</remarks>
/// <returns>查詢資料表</returns>
public DataTable GetDataTable(string DBCmdText, CommandType DBCmdType, string TableName)
{
SqlCommand cmdSQL = new SqlCommand();
DataTable tmpDataTable = new DataTable();
try
{
cmdSQL = DBCommand(DBConn(), DBCmdText, DBCmdType);
tmpDataTable = GetDataTable(cmdSQL, TableName);
}
catch { }
cmdSQL.Dispose();
return tmpDataTable;
}
#endregion
#region 執行 SQL 指令
/// <summary>
/// 使用 SQL 指令字串來執行 SQL 命令
/// </summary>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <remarks>執行所指定的 SQL 命令字串。</remarks>
/// <returns>影響的資料行數量</returns>
public int ExecuteCMD(string DBCmdText)
{
SqlCommand cmdSQL = new SqlCommand();
int intEffect = 0;
try
{
cmdSQL = DBCommand(DBConn(), DBCmdText);
intEffect = cmdSQL.ExecuteNonQuery();
}
catch
{
intEffect = -1;
}
cmdSQL.Dispose();
return intEffect;
}
/// <summary>
/// 使用 SQL 指令字串來執行 SQL 命令,並且使用交易模式
/// </summary>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <remarks>執行所指定的 SQL 命令字串。</remarks>
/// <returns>影響的資料行數量</returns>
public bool ExecuteTransCMD(string DBCmdText)
{
SqlCommand cmdSQL = new SqlCommand();
SqlTransaction traSQL;
try
{
cmdSQL = DBCommand(DBConn(), DBCmdText, out traSQL);
try
{
cmdSQL.ExecuteNonQuery();
traSQL.Commit();
}
catch
{
traSQL.Rollback();
throw new Exception();
}
finally
{
traSQL.Dispose();
cmdSQL.Dispose();
}
return true;
}
catch
{
cmdSQL.Dispose();
return false;
}
}
/// <summary>
/// 使用 SQL 指令字串與參數集,來執行 SQL 命令
/// </summary>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdParameters">SQL 指令集的參數</param>
/// <remarks>執行所指定的 SQL 命令字串與指令參數集。</remarks>
/// <returns>影響的資料行數量</returns>
public int ExecuteCMD(string DBCmdText, SqlParameterCollection DBCmdParameters)
{
SqlCommand cmdSQL = new SqlCommand();
int intEffect = 0;
try
{
cmdSQL = DBCommand(DBConn(), DBCmdText, DBCmdParameters);
intEffect = cmdSQL.ExecuteNonQuery();
}
catch
{
intEffect = -1;
}
cmdSQL.Dispose();
return intEffect;
}
#endregion
#region 取回單一查詢值
/// <summary>
/// 使用 SQL 指令字串來取回單一回傳值
/// </summary>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <remarks>執行所指定的 SQL 命令字串,取回查詢結果第一行第一個欄位值。</remarks>
/// <returns>查詢結果資料物件</returns>
public object GetSingleValue(string DBCmdText)
{
SqlCommand cmdSQL = new SqlCommand();
object objReturn = new object();
try
{
cmdSQL = DBCommand(DBConn(), DBCmdText);
objReturn = cmdSQL.ExecuteScalar();
}
catch
{
objReturn = null;
}
cmdSQL.Dispose();
return objReturn;
}
/// <summary>
/// 使用 SQL 指令字串與參數集,來取回單一回傳值
/// </summary>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdParameters">SQL 指令集的參數</param>
/// <remarks>執行所指定的 SQL 命令字串與指令參數集,取回查詢結果第一行第一個欄位值。</remarks>
/// <returns>查詢結果資料物件</returns>
public object GetSingleValue(string DBCmdText, SqlParameterCollection DBCmdParameters)
{
SqlCommand cmdSQL = new SqlCommand();
object objReturn = new object();
try
{
cmdSQL = DBCommand(DBConn(), DBCmdText, DBCmdParameters);
objReturn = cmdSQL.ExecuteScalar();
}
catch
{
objReturn = null;
}
cmdSQL.Dispose();
return objReturn;
}
#endregion
#region 取回第一行的所有資料
/// <summary>
/// 使用 SQL 指令字串,取回符合條件的第一筆資料
/// </summary>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <remarks>依指定的 SQL 命令字串,取回查詢結果的第一行資料。</remarks>
/// <returns>查詢結果的第一行資料</returns>
public Hashtable GetFirstRowData(string DBCmdText)
{
SqlCommand cmdSQL = new SqlCommand();
Hashtable htReturn = new Hashtable();
try
{
cmdSQL = DBCommand(DBConn(), DBCmdText);
htReturn = GetFirstRowData(cmdSQL);
}
catch { }
cmdSQL.Dispose();
return htReturn;
}
/// <summary>
/// 使用 SQL 指令字串與參數集,取回符合條件的第一筆資料
/// </summary>
/// <param name="DBCmdText">SQL 指令字串</param>
/// <param name="DBCmdParameters">SQL 指令集的參數</param>
/// <remarks>依指定的 SQL 命令字串與指令參數集,取回查詢結果的第一行資料。</remarks>
/// <returns>查詢結果的第一行資料</returns>
public Hashtable GetFirstRowData(string DBCmdText, SqlParameterCollection DBCmdParameters)
{
SqlCommand cmdSQL = new SqlCommand();
Hashtable objReturn = new Hashtable();
try
{
cmdSQL = DBCommand(DBConn(), DBCmdText, DBCmdParameters);
objReturn = GetFirstRowData(cmdSQL);
}
catch { }
cmdSQL.Dispose();
return objReturn;
}
/// <summary>
/// 使用 SQL 命令物件,取回符合條件的第一筆資料
/// </summary>
/// <param name="DBCommands">SQL 命令物件</param>
/// <remarks>依指定的 SQL 命令物件,取回查詢結果的第一行資料。</remarks>
/// <returns>查詢結果的第一行資料</returns>
public Hashtable GetFirstRowData(SqlCommand DBCommands)
{
SqlDataReader drSQL;
Hashtable objReturn = new Hashtable();
try
{
drSQL = DBCommands.ExecuteReader();
if (drSQL.HasRows)
{
drSQL.Read();
for (int i = 0; i < drSQL.FieldCount; i++)
{
objReturn.Add(drSQL.GetName(i), drSQL[i]);
}
}
else
{
objReturn = null;
}
drSQL.Dispose();
}
catch
{
objReturn = null;
}
return objReturn;
}
#endregion
/// <summary>
/// 釋放所使用的資源
/// </summary>
/// <remarks>釋放類別所使用的資源。</remarks>
public void Dispose()
{
System.GC.Collect();
}
}
}
程式是運氣與直覺堆砌而成的奇蹟。
若不具備這兩者,不可能以這樣的工時實現這樣的規格。
修改規格是對奇蹟吐槽的褻瀆行為。
而追加修改則是相信奇蹟還會重現的魯莽行動。