适用于 Web 项目 using System; using System.Data; using System.Data.SqlClient; using System.Configuration; namespace Prj.DbBase ... { /**//// <summary> /// 通用的数据库处理类,通过ado.net与数据库连接 /// </summary> public class Database : IDisposable ...{ // 连接数据源 private SqlConnection con; /**//// <summary> /// 执行存储过程 /// </summary> /// <param name="procName">存储过程的名称</param> /// <returns>返回存储过程返回值</returns> public int RunProc(string procName) ...{ SqlCommand cmd = CreateCommand(procName, null); cmd.ExecuteNonQuery(); this.Close(); return (int)cmd.Parameters["ReturnValue"].Value; } /**//// <summary> /// 执行存储过程 /// </summary> /// <param name="procName">存储过程名称</param> /// <param name="prams">存储过程所需参数</param> /// <returns>返回存储过程返回值</returns> public int RunProc(string procName, SqlParameter[] prams) ...{ SqlCommand cmd = CreateCommand(procName, prams); cmd.ExecuteNonQuery(); this.Close(); return (int)cmd.Parameters["ReturnValue"].Value; } /**//// <summary> /// 执行存储过程 /// </summary> /// <param name="procName">存储过程的名称</param> /// <param name="dataReader">返回存储过程返回值</param> public void RunProc(string procName, out SqlDataReader dataReader) ...{ SqlCommand cmd = CreateCommand(procName, null); dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); //return (int)cmd.Parameters["ReturnValue"].Value; } /**//// <summary> /// 执行存储过程 /// </summary> /// <param name="procName">存储过程的名称</param> /// <param name="prams">存储过程所需参数</param> /// <param name="dataReader">存储过程所需参数</param> public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader) ...{ SqlCommand cmd = CreateCommand(procName, prams); dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection); //return (int)cmd.Parameters["ReturnValue"].Value; } /**//// <summary> /// 创建一个SqlCommand对象以此来执行存储过程 /// </summary> /// <param name="procName">存储过程的名称</param> /// <param name="prams">存储过程所需参数</param> /// <returns>返回SqlCommand对象</returns> private SqlCommand CreateCommand(string procName, SqlParameter[] prams) ...{ // 确认打开连接 Open(); SqlCommand cmd = new SqlCommand(procName, con); cmd.CommandType = CommandType.StoredProcedure; // 依次把参数传入存储过程 if (prams != null) ...{ foreach (SqlParameter parameter in prams) cmd.Parameters.Add(parameter); } // 加入返回参数 cmd.Parameters.Add( new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null)); return cmd; } /**//// <summary> /// 打开数据库连接. /// </summary> private void Open() ...{ // 打开数据库连接 if (con == null) ...{ con = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); } if(con.State ==System.Data.ConnectionState.Closed) con.Open(); } /**//// <summary> /// 关闭数据库连接 /// </summary> public void Close() ...{ if (con != null) con.Close(); } /**//// <summary> /// 释放资源 /// </summary> public void Dispose() ...{ // 确认连接是否已经关闭 if (con != null) ...{ con.Dispose(); con = null; } } /**//// <summary> /// 传入输入参数 /// </summary> /// <param name="ParamName">存储过程名称</param> /// <param name="DbType">参数类型</param></param> /// <param name="Size">参数大小</param> /// <param name="Value">参数值</param> /// <returns>新的 parameter 对象</returns> public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value) ...{ return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value); } /**//// <summary> /// 传入返回值参数 /// </summary> /// <param name="ParamName">存储过程名称</param> /// <param name="DbType">参数类型</param> /// <param name="Size">参数大小</param> /// <returns>新的 parameter 对象</returns> public SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size) ...{ return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null); } /**//// <summary> /// 传入返回值参数 /// </summary> /// <param name="ParamName">存储过程名称</param> /// <param name="DbType">参数类型</param> /// <param name="Size">参数大小</param> /// <returns>新的 parameter 对象</returns> public SqlParameter MakeReturnParam(string ParamName, SqlDbType DbType, int Size) ...{ return MakeParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null); } /**//// <summary> /// 生成存储过程参数 /// </summary> /// <param name="ParamName">存储过程名称</param> /// <param name="DbType">参数类型</param> /// <param name="Size">参数大小</param> /// <param name="Direction">参数方向</param> /// <param name="Value">参数值</param> /// <returns>新的 parameter 对象</returns> 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 (!(Direction == ParameterDirection.Output && Value == null)) param.Value = Value; return param; } } }