/*
* 說明
* 功能說明:數據訪問封裝。所有數據都要通過這個類定義的dbConnection訪問數據庫。同時,定義了通用的cmd,以及cmd常用的訪問存儲過程的方法RunPro
*
*
* 作者: RogerWang
*
* 創建日期:2006-02-15
*
*/
using System;
using System.Data;
using System.Data.SqlClient;
namespace insurer
{
/// <summary>
/// DataAccess 的摘要說明。
/// </summary>
public class DataAccess
{
private readonly string SQLCONNECTSTR = "server=(local);uid=sa;pwd=lwrong;database=insurer";
private SqlConnection dbConnection;
private readonly string RETUENVALUE = "RETURNVALUE";
//判斷要不要啓動事務
private bool startrans = false;
//爲解決多筆數據導入的問題,特添加的事務處理屬性
private SqlTransaction trans = null;
//定義是否啓動事務屬性
public bool StartTrans
{
get
{
return startrans;
}
set
{
startrans = value;
}
}
//定義事務
public SqlTransaction Trans
{
get
{
return trans;
}
set
{
if (value != null)
{
trans = value;
}
}
}
//創建打開dbConnection對象
public void OpenConnection()
{
if ( dbConnection == null )
{
dbConnection = new SqlConnection(SQLCONNECTSTR);
}
if ( dbConnection.State == ConnectionState.Closed )
{
try
{
dbConnection.Open();
}
catch(Exception ex)
{
SystemError.SystemLog(ex.Message);
}
finally
{
}
}
}
//釋放dbConnection對象
public void CloseConnection()
{
if (dbConnection != null)
{
if (dbConnection.State == ConnectionState.Open)
{
dbConnection.Dispose();
dbConnection = null;
}
}
}
//
//創建cmd,注意dbconnection在該函數中創建,但沒有在這函數中釋放。
//在正確的面向對象設計方法中,對象應該是誰創建,誰就應該負責釋放。按這個觀點,這個過程有些不安全!!!!
private SqlCommand CreateCommand(string ProName,SqlParameter[] prams)
{
OpenConnection();
SqlCommand cmd = new SqlCommand(ProName,dbConnection);
cmd.CommandType = CommandType.StoredProcedure;
//如果進行事務處理,那麼對cmd的Transaction的事務賦值
if (StartTrans)
{
cmd.Transaction = Trans;
}
if ( prams != null)
{
foreach(SqlParameter parameter in prams)
{
cmd.Parameters.Add(parameter);
}
}
//cmd.Parameters.Add(
return cmd;
}
/// <summary>
/// 創建cmd,並執行相應的操作。 然後釋放cmd!
///
/// 該函數是執行cmd沒有返回值,且沒有參數的方法。
/// </summary>
/// <param name="ProName"></param>
public bool RunProc(string ProName)
{
SqlCommand cmd = CreateCommand(ProName,null);
bool k = false;
try
{
k = (bool)cmd.ExecuteScalar();
}
catch(Exception ex)
{
SystemError.SystemLog(ex.Message);
}
finally
{
cmd.Dispose();
}
return k;
}
/// <summary>
/// 創建cmd,並執行相應的操作。 然後釋放cmd!
///
/// 該函數是執行cmd沒有返回值,但有參數的方法。
/// </summary>
/// <param name="ProName"></param>
/// <param name="prams"></param>
public bool RunProc(string ProName,SqlParameter[] prams)
{
SqlCommand cmd = CreateCommand(ProName,prams);
bool k = false;
try
{
k = (bool) cmd.ExecuteScalar();
}
catch(Exception ex)
{
SystemError.SystemLog(ex.Message);
}
finally
{
cmd.Dispose();
//Close();
}
return k;
}
/// <summary>
/// 創建cmd,並執行相應的操作。 然後釋放cmd!
///
/// 該函數是執行cmd帶有返回值,但沒有參數的方法。
/// </summary>
/// <param name="ProName"></param>
/// <param name="dataReader"></param>
public void RunProc(string ProName,out SqlDataReader dataReader)
{
SqlCommand cmd = CreateCommand(ProName,null);
dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
try
{
}
catch(Exception ex)
{
SystemError.SystemLog(ex.Message);
}
finally
{
cmd.Dispose();
}
}
/// <summary>
/// 創建cmd,並執行相應的操作。 然後釋放cmd!
///
/// 該函數是執行cmd帶有返回值,且有參數的方法。
/// </summary>
/// <param name="ProName"></param>
/// <param name="prams"></param>
/// <param name="dataReader"></param>
public void RunProc(string ProName,SqlParameter[] prams,out SqlDataReader dataReader)
{
SqlCommand cmd = CreateCommand(ProName,prams);
dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
try
{
}
catch(Exception ex)
{
SystemError.SystemLog(ex.Message);
}
finally
{
cmd.Dispose();
}
}
/// <summary>
/// 創建cmd的參數
/// 該方法的思路就是按條件生成一個SqlParameter對象。
/// 生成對象後,再給對象賦相應的返回值類型
/// </summary>
/// <param name="ParamName"></param>
/// <param name="DbType"></param>
/// <param name="size"></param>
/// <param name="direction"></param>
/// <param name="Value"></param>
/// <returns></returns>
public SqlParameter CreateParam(string ParamName, SqlDbType DbType, int 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;
param.Value = Value;
return param;
}
/// <summary>
/// 創建cmd的輸入參數
/// </summary>
/// <param name="ParamName"></param>
/// <param name="DbType"></param>
/// <param name="size"></param>
/// <param name="Value"></param>
/// <returns></returns>
public SqlParameter CreateInParam(string ParamName, SqlDbType DbType, int size, object Value)
{
return CreateParam(ParamName,DbType,size,ParameterDirection.Input,Value);
}
/// <summary>
/// 創建cmd的輸出參數
/// </summary>
/// <param name="ParamName"></param>
/// <param name="DbType"></param>
/// <param name="size"></param>
/// <returns></returns>
public SqlParameter CreateOutParam(string ParamName, SqlDbType DbType, int size)
{
return CreateParam(ParamName,DbType,size,ParameterDirection.Output,null);
}
/// <summary>
/// 創建cmd帶有返回值的參數
/// </summary>
/// <param name="ParamName"></param>
/// <param name="DbType"></param>
/// <param name="size"></param>
/// <returns></returns>
public SqlParameter CreateReturnParam(string ParamName,SqlDbType DbType, int size)
{
return CreateParam(ParamName,DbType,size,ParameterDirection.ReturnValue,null);
}
//開始一個事務
public void BeginTrans()
{
OpenConnection();
Trans = dbConnection.BeginTransaction(IsolationLevel.Serializable);
}
public void Commit()
{
if (Trans != null)
{
Trans.Commit();
}
}
public void Rollback()
{
if (Trans != null)
{
Trans.Rollback();
}
}
}
}
C#數據庫操作類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Linux基本操作命令
wbzjacky
2019-02-24 13:12:38
真實的模擬***綜合實驗
wbzjacky
2019-02-24 13:12:37
三層交換機的HSRP、vlan、端口聚合
wbzjacky
2019-02-24 13:12:37
如果同事暗中傷害你,應該怎麼辦?
這個饅頭有餡
2019-02-24 13:59:08
職場中,抱怨越多的員工,越被領導瞧不起!
這個饅頭有餡
2019-02-24 13:59:08
老程序員被裁,應屆生卻能月薪 1.3 萬?這你能忍?
前端高達
2019-02-24 13:48:04
遇到到處蹭吃卻從不請客吃飯的主怎麼辦?
樑軍年
2019-02-24 13:26:35
高標準機房綜合配線安裝
wbzjacky
2019-02-24 13:12:38
IPsec ***實驗
wbzjacky
2019-02-24 13:12:37
CISCO路由AAA的Easy ***
wbzjacky
2019-02-24 13:12:37
FX2LP 可以最簡單的Template Code
sychen0608
2020-12-12 19:41:50
C# 數字轉換成文字 十進位 ==> 二進位/十六進位
sychen0608
2020-12-12 19:17:09