您的位置:首页 > 数据库

C#数据库操作类

2010-04-07 15:13 267 查看
/*


* 说明


* 功能说明:数据访问封装。所有数据都要通过这个类定义的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();


}


}


}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: