www.pudn.com > UDS1.1_51aspx.rar > Database.cs
using System;
using System.ComponentModel;
using System.Collections;
using System.Diagnostics;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace UDS.Components {
///
/// 通用的数据库处理类,通过ado.net与数据库连接
///
public class Database : IDisposable {
// 连接数据源
private SqlConnection con;
///
/// 执行存储过程
///
/// 存储过程的名称
/// 返回存储过程返回值
public int RunProc(string procName) {
SqlCommand cmd = CreateCommand(procName, null);
cmd.ExecuteNonQuery();
this.Close();
return (int)cmd.Parameters["ReturnValue"].Value;
}
///
/// 执行存储过程
///
/// 存储过程名称
/// 存储过程所需参数
/// 返回存储过程返回值
public int RunProc(string procName, SqlParameter[] prams) {
SqlCommand cmd = CreateCommand(procName, prams);
cmd.ExecuteNonQuery();
this.Close();
return (int)cmd.Parameters["ReturnValue"].Value;
}
///
/// 执行存储过程
///
/// 存储过程的名称
/// 返回存储过程返回值
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;
}
///
/// 执行存储过程
///
/// 存储过程的名称
/// 存储过程所需参数
/// 存储过程所需参数
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;
}
///
/// 创建一个SqlCommand对象以此来执行存储过程
///
/// 存储过程的名称
/// 存储过程所需参数
/// 返回SqlCommand对象
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;
}
///
/// 打开数据库连接.
///
private void Open() {
// 打开数据库连接
if (con == null) {
con = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
}
if(con.State ==System.Data.ConnectionState.Closed)
con.Open();
}
///
/// 关闭数据库连接
///
public void Close() {
if (con != null)
con.Close();
}
///
/// 释放资源
///
public void Dispose() {
// 确认连接是否已经关闭
if (con != null) {
con.Dispose();
con = null;
}
}
///
/// 传入输入参数
///
/// 存储过程名称
/// 参数类型
/// 参数大小
/// 参数值
/// 新的 parameter 对象
public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value) {
return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
}
///
/// 传入返回值参数
///
/// 存储过程名称
/// 参数类型
/// 参数大小
/// 新的 parameter 对象
public SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size) {
return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
}
///
/// 传入返回值参数
///
/// 存储过程名称
/// 参数类型
/// 参数大小
/// 新的 parameter 对象
public SqlParameter MakeReturnParam(string ParamName, SqlDbType DbType, int Size)
{
return MakeParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
}
///
/// 生成存储过程参数
///
/// 存储过程名称
/// 参数类型
/// 参数大小
/// 参数方向
/// 参数值
/// 新的 parameter 对象
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;
}
}
}