Database.cs
上传用户:cha0314
上传日期:2014-03-02
资源大小:12522k
文件大小:6k
- using System;
- using System.ComponentModel;
- using System.Collections;
- using System.Diagnostics;
- using System.Data;
- using System.Data.SqlClient;
- using System.Configuration;
- namespace UDS.Components {
- /// <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;
- }
- }
- }