C#操作SQL Server数据库通用类
来源:互联网 发布:淘宝网店装修图片尺寸 编辑:程序博客网 时间:2024/04/24 17:31
在前段时间写的文章<< C#中读取文本文件导入SQL数据库解决方法>>一文中,文章链接:[url]http://alligator.blog.51cto.com/36993/102446[/url]。描述了如何处理具有固定格式文本文件的处理方式,并提供了操作文本文件的源代码供参考。有朋友通过留言希望提供数据操作类,本想重新整理后再放上来,但最近事情太多,精力有限,直接把源码放上来,有兴趣的朋友请参考!
/*
* 说明
* 功能说明:数据访问封装。所有数据都要通过这个类定义的dbConnection访问数据库。同时,定义了通用的cmd,以及cmd常用的访问存储过程的方法RunPro
*
*
* 作者: RogerWang
*
* 创建日期:2006-02-15
*
*/
using System;
using System.Data;
using System.Data.SqlClient;
namespace insurer
{
/// <summary>
/// DataAccess 的摘要说明。
/// </summary>
publicclass DataAccess
{
privatereadonly string SQLCONNECTSTR ="server=(local);uid=sa;pwd=lwrong;database=insurer";
private SqlConnection dbConnection;
privatereadonly string RETUENVALUE ="RETURNVALUE";
//判断要不要启动事务
privatebool startrans = false;
//为解决多笔数据导入的问题,特添加的事务处理属性
private SqlTransaction trans =null;
//定义是否启动事务属性
publicbool StartTrans
{
get
{
return startrans;
}
set
{
startrans = value;
}
}
//定义事务
public SqlTransaction Trans
{
get
{
return trans;
}
set
{
if (value !=null)
{
trans = value;
}
}
}
//创建打开dbConnection对象
publicvoid 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对象
publicvoid 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 parameterin prams)
{
cmd.Parameters.Add(parameter);
}
}
//cmd.Parameters.Add(
return cmd;
}
/// <summary>
/// 创建cmd,并执行相应的操作。 然后释放cmd!
///
/// 该函数是执行cmd没有返回值,且没有参数的方法。
/// </summary>
/// <param name="ProName"></param>
publicbool 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>
publicbool 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>
publicvoid 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>
publicvoid 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);
}
//开始一个事务
publicvoid BeginTrans()
{
OpenConnection();
Trans = dbConnection.BeginTransaction(IsolationLevel.Serializable);
}
publicvoid Commit()
{
if (Trans !=null)
{
Trans.Commit();
}
}
publicvoid Rollback()
{
if (Trans !=null)
{
Trans.Rollback();
}
}
}
}
* 说明
* 功能说明:数据访问封装。所有数据都要通过这个类定义的dbConnection访问数据库。同时,定义了通用的cmd,以及cmd常用的访问存储过程的方法RunPro
*
*
* 作者: RogerWang
*
* 创建日期:2006-02-15
*
*/
using System;
using System.Data;
using System.Data.SqlClient;
namespace insurer
{
/// <summary>
/// DataAccess 的摘要说明。
/// </summary>
publicclass DataAccess
{
privatereadonly string SQLCONNECTSTR ="server=(local);uid=sa;pwd=lwrong;database=insurer";
private SqlConnection dbConnection;
privatereadonly string RETUENVALUE ="RETURNVALUE";
//判断要不要启动事务
privatebool startrans = false;
//为解决多笔数据导入的问题,特添加的事务处理属性
private SqlTransaction trans =null;
//定义是否启动事务属性
publicbool StartTrans
{
get
{
return startrans;
}
set
{
startrans = value;
}
}
//定义事务
public SqlTransaction Trans
{
get
{
return trans;
}
set
{
if (value !=null)
{
trans = value;
}
}
}
//创建打开dbConnection对象
publicvoid 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对象
publicvoid 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 parameterin prams)
{
cmd.Parameters.Add(parameter);
}
}
//cmd.Parameters.Add(
return cmd;
}
/// <summary>
/// 创建cmd,并执行相应的操作。 然后释放cmd!
///
/// 该函数是执行cmd没有返回值,且没有参数的方法。
/// </summary>
/// <param name="ProName"></param>
publicbool 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>
publicbool 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>
publicvoid 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>
publicvoid 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);
}
//开始一个事务
publicvoid BeginTrans()
{
OpenConnection();
Trans = dbConnection.BeginTransaction(IsolationLevel.Serializable);
}
publicvoid Commit()
{
if (Trans !=null)
{
Trans.Commit();
}
}
publicvoid Rollback()
{
if (Trans !=null)
{
Trans.Rollback();
}
}
}
}
本文出自 “我儿子真帅!” 博客,转载请与作者联系!
- C#操作SQL Server数据库通用类
- C#操作SQL SERVER数据库通用类
- C#操作MS SQL Server 数据库的通用类
- C#操作SQL Server通用类
- C# SQL数据库操作通用类
- SQL SERVER C#数据库操作类
- sql server C#数据库操作类(转)
- C#操作sql server 数据库访问类
- c# 数据库操作类sql server篇
- C#操作SQL Server数据库
- C#操作SQL Server数据库
- C#操作SQL Server数据库
- C#操作SQL Server数据库
- C#操作SQL Server数据库
- C#操作SQL Server数据库
- C#操作SQL Server数据库
- C#操作SQL Server数据库
- C#操作SQL Server数据库
- 理解SQL Server 服务帐户模式
- 轻松实现SQL Server异地备份
- SQL Server 2005 安全性增强
- SQL Server系统数据库恢复
- 写尽自己一个人的孤独,却写不出心里的寂寞
- C#操作SQL Server数据库通用类
- 端口查看与关闭方法小结
- 我眼中的云计算
- 恢复Outlook Express目录结构
- 理解双绞线中直通线、交叉线的实际意义
- 理解单播、组播和广播
- 理解TCP中的三次握手
- IOS模式简介
- VIM IDE搭建(一)---ctags