1
 /**///////////////数据访问类
/**///////////////数据访问类 
2 using System;
using System;
3 using System.ComponentModel;
using System.ComponentModel;
4 using System.Collections;
using System.Collections;
5 using System.Web.Security;
using System.Web.Security;
6 using System.Diagnostics;
using System.Diagnostics;
7 using System.Data;
using System.Data;
8 using System.Data.SqlClient;
using System.Data.SqlClient;
9 using System.Configuration;
using System.Configuration;
10 using System.Text.RegularExpressions;
using System.Text.RegularExpressions;
11
12 namespace WebApp.Components
namespace WebApp.Components
13

 {
{
14
 /**//// <summary>
    /**//// <summary> 
15 /// 通用的数据库处理类,通过ado.net与数据库连接
    /// 通用的数据库处理类,通过ado.net与数据库连接 
16 /// </summary>
    /// </summary> 
17 public class Database : IDisposable
    public class Database : IDisposable
18
 
     {
{
19 // 连接数据源
        // 连接数据源 
20 private SqlConnection con;
        private SqlConnection con;
21
22
 执行不带参数的存储过程,返回存储过程返回值#region 执行不带参数的存储过程,返回存储过程返回值
        执行不带参数的存储过程,返回存储过程返回值#region 执行不带参数的存储过程,返回存储过程返回值
23
 /**//// <summary>
        /**//// <summary> 
24 /// 执行存储过程
        /// 执行存储过程 
25 /// </summary>
        /// </summary> 
26 /// <param name="procName">不带参数的存储过程的名称</param>
        /// <param name="procName">不带参数的存储过程的名称</param> 
27 /// <returns>返回存储过程返回值</returns>
        /// <returns>返回存储过程返回值</returns> 
28 public int RunProc(string procName)
        public int RunProc(string procName)
29
 
         {
{
30 SqlCommand cmd = CreateCommand(procName, null);
            SqlCommand cmd = CreateCommand(procName, null);
31 cmd.ExecuteNonQuery();
            cmd.ExecuteNonQuery();
32 this.Close();
            this.Close();
33 return (int)cmd.Parameters["ReturnValue"].Value;
            return (int)cmd.Parameters["ReturnValue"].Value;
34 }
        }
35 #endregion
        #endregion
36
37
 执行带参数的存储过程,返回存储过程返回值#region 执行带参数的存储过程,返回存储过程返回值
        执行带参数的存储过程,返回存储过程返回值#region 执行带参数的存储过程,返回存储过程返回值
38
 /**//// <summary>
        /**//// <summary> 
39 /// 执行存储过程
        /// 执行存储过程 
40 /// </summary>
        /// </summary> 
41 /// <param name="procName">带参数存储过程名称</param>
        /// <param name="procName">带参数存储过程名称</param> 
42 /// <param name="prams">存储过程所需参数</param>
        /// <param name="prams">存储过程所需参数</param> 
43 /// <returns>返回存储过程返回值</returns>
        /// <returns>返回存储过程返回值</returns> 
44 public int RunProc(string procName, SqlParameter[] prams)
        public int RunProc(string procName, SqlParameter[] prams)
45
 
         {
{
46 SqlCommand cmd = CreateCommand(procName, prams);
            SqlCommand cmd = CreateCommand(procName, prams);
47 cmd.ExecuteNonQuery();
            cmd.ExecuteNonQuery();
48 this.Close();
            this.Close();
49 return (int)cmd.Parameters["ReturnValue"].Value;
            return (int)cmd.Parameters["ReturnValue"].Value;
50 }
        }
51 #endregion
        #endregion
52
53
 执行不带参数的存储过程,通过输出参数返回SqlDataReader对象#region 执行不带参数的存储过程,通过输出参数返回SqlDataReader对象
        执行不带参数的存储过程,通过输出参数返回SqlDataReader对象#region 执行不带参数的存储过程,通过输出参数返回SqlDataReader对象
54
 /**//// <summary>
        /**//// <summary> 
55 /// 执行存储过程
        /// 执行存储过程 
56 /// </summary>
        /// </summary> 
57 /// <param name="procName">不带参数的存储过程的名称</param>
        /// <param name="procName">不带参数的存储过程的名称</param> 
58 /// <param name="dataReader">通过输出参数返回SqlDataReader对象</param>
        /// <param name="dataReader">通过输出参数返回SqlDataReader对象</param> 
59 public void RunProc(string procName, out SqlDataReader dataReader)
        public void RunProc(string procName, out SqlDataReader dataReader)
60
 
         {
{
61 SqlCommand cmd = CreateCommand(procName, null);
            SqlCommand cmd = CreateCommand(procName, null);
62 dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
            dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
63 }
        }
64 #endregion
        #endregion
65
66
 执行带参数的存储过程,通过输出参数返回SqlDataReader对象#region 执行带参数的存储过程,通过输出参数返回SqlDataReader对象
        执行带参数的存储过程,通过输出参数返回SqlDataReader对象#region 执行带参数的存储过程,通过输出参数返回SqlDataReader对象
67
 /**//// <summary>
        /**//// <summary> 
68 /// 执行存储过程
        /// 执行存储过程 
69 /// </summary>
        /// </summary> 
70 /// <param name="procName">带参数的存储过程的名称</param>
        /// <param name="procName">带参数的存储过程的名称</param> 
71 /// <param name="prams">存储过程所需参数</param>
        /// <param name="prams">存储过程所需参数</param> 
72 /// <param name="dataReader">通过输出参数返回SqlDataReader对象</param>
        /// <param name="dataReader">通过输出参数返回SqlDataReader对象</param> 
73 public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
        public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
74
 
         {
{
75 SqlCommand cmd = CreateCommand(procName, prams);
            SqlCommand cmd = CreateCommand(procName, prams);
76 dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
            dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
77 }
        }
78 #endregion
        #endregion
79
80
 创建SqlCommand对象#region 创建SqlCommand对象
        创建SqlCommand对象#region 创建SqlCommand对象
81
 /**//// <summary>
        /**//// <summary> 
82 /// 创建一个SqlCommand对象以此来执行存储过程
        /// 创建一个SqlCommand对象以此来执行存储过程 
83 /// </summary>
        /// </summary> 
84 /// <param name="procName">存储过程的名称</param>
        /// <param name="procName">存储过程的名称</param> 
85 /// <param name="prams">存储过程所需参数</param>
        /// <param name="prams">存储过程所需参数</param> 
86 /// <returns>返回SqlCommand对象</returns>
        /// <returns>返回SqlCommand对象</returns> 
87 private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
        private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
88
 
         {
{
89 // 确认打开连接
            // 确认打开连接 
90 Open();
            Open();
91 SqlCommand cmd = new SqlCommand(procName, con);
            SqlCommand cmd = new SqlCommand(procName, con);
92 cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandType = CommandType.StoredProcedure;
93
94 // 依次把参数传入存储过程
            // 依次把参数传入存储过程 
95 if (prams != null)
            if (prams != null)
96
 
             {
{
97 foreach (SqlParameter parameter in prams)
                foreach (SqlParameter parameter in prams)
98 cmd.Parameters.Add(parameter);
                    cmd.Parameters.Add(parameter);
99 }
            }
100
101 // 加入返回参数
            // 加入返回参数 
102 cmd.Parameters.Add(
            cmd.Parameters.Add(
103 new SqlParameter("ReturnValue", SqlDbType.Int, 4,
            new SqlParameter("ReturnValue", SqlDbType.Int, 4,
104 ParameterDirection.ReturnValue, false, 0, 0,
            ParameterDirection.ReturnValue, false, 0, 0,
105 string.Empty, DataRowVersion.Default, null));
            string.Empty, DataRowVersion.Default, null));
106
107 return cmd;
            return cmd;
108 }
        }
109 #endregion
        #endregion
110
111
 打开数据库连接#region 打开数据库连接
        打开数据库连接#region 打开数据库连接
112
 /**//// <summary>
        /**//// <summary> 
113 /// 打开数据库连接.
        /// 打开数据库连接. 
114 /// </summary>
        /// </summary> 
115 private void Open()
        private void Open()
116
 
         {
{
117 // 打开数据库连接
            // 打开数据库连接 
118 if (con == null)
            if (con == null)
119
 
             {
{
120 con = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
                con = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
121 }
            }
122 if (con.State == System.Data.ConnectionState.Closed)
            if (con.State == System.Data.ConnectionState.Closed)
123 con.Open();
                con.Open();
124
125 }
        }
126 #endregion
        #endregion
127
128
 关闭数据库连接#region 关闭数据库连接
        关闭数据库连接#region 关闭数据库连接
129
 /**//// <summary>
        /**//// <summary> 
130 /// 关闭数据库连接
        /// 关闭数据库连接 
131 /// </summary>
        /// </summary> 
132 public void Close()
        public void Close()
133
 
         {
{
134 if (con != null)
            if (con != null)
135 con.Close();
                con.Close();
136 }
        }
137 #endregion
        #endregion
138
139
 释放资源#region 释放资源
        释放资源#region 释放资源
140
 /**//// <summary>
        /**//// <summary> 
141 /// 释放资源
        /// 释放资源 
142 /// </summary>
        /// </summary> 
143 public void Dispose()
        public void Dispose()
144
 
         {
{
145 // 确认连接是否已经关闭
            // 确认连接是否已经关闭 
146 if (con != null)
            if (con != null)
147
 
             {
{
148 con.Dispose();
                con.Dispose();
149 con = null;
                con = null;
150 }
            }
151 }
        }
152 #endregion
        #endregion
153
154
 传入输入参数#region 传入输入参数
        传入输入参数#region 传入输入参数
155
 /**//// <summary>
        /**//// <summary> 
156 /// 传入输入参数
        /// 传入输入参数 
157 /// </summary>
        /// </summary> 
158 /// <param name="ParamName">存储过程名称</param>
        /// <param name="ParamName">存储过程名称</param> 
159 /// <param name="DbType">参数类型</param>
        /// <param name="DbType">参数类型</param> 
160 /// <param name="Size">参数大小</param>
        /// <param name="Size">参数大小</param> 
161 /// <param name="Value">参数值</param>
        /// <param name="Value">参数值</param> 
162 /// <returns>新的 parameter 对象</returns>
        /// <returns>新的 parameter 对象</returns> 
163 public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)
        public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)
164
 
         {
{
165 return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
            return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
166 }
        }
167 #endregion
        #endregion
168
169
 传入输出参数#region 传入输出参数
        传入输出参数#region 传入输出参数
170
 /**//// <summary>
        /**//// <summary> 
171 /// 传入输出参数
        /// 传入输出参数 
172 /// </summary>
        /// </summary> 
173 /// <param name="ParamName">存储过程名称</param>
        /// <param name="ParamName">存储过程名称</param> 
174 /// <param name="DbType">参数类型</param>
        /// <param name="DbType">参数类型</param> 
175 /// <param name="Size">参数大小</param>
        /// <param name="Size">参数大小</param> 
176 /// <returns>新的 parameter 对象</returns>
        /// <returns>新的 parameter 对象</returns> 
177 public SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size)
        public SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size)
178
 
         {
{
179 return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
            return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
180 }
        }
181 #endregion
        #endregion
182
183
 传入返回值参数#region 传入返回值参数
        传入返回值参数#region 传入返回值参数
184
 /**//// <summary>
        /**//// <summary> 
185 /// 传入返回值参数
        /// 传入返回值参数 
186 /// </summary>
        /// </summary> 
187 /// <param name="ParamName">存储过程名称</param>
        /// <param name="ParamName">存储过程名称</param> 
188 /// <param name="DbType">参数类型</param>
        /// <param name="DbType">参数类型</param> 
189 /// <param name="Size">参数大小</param>
        /// <param name="Size">参数大小</param> 
190 /// <returns>新的 parameter 对象</returns>
        /// <returns>新的 parameter 对象</returns> 
191 public SqlParameter MakeReturnParam(string ParamName, SqlDbType DbType, int Size)
        public SqlParameter MakeReturnParam(string ParamName, SqlDbType DbType, int Size)
192
 
         {
{
193 return MakeParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
            return MakeParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
194 }
        }
195 #endregion
        #endregion
196
197
 生成存储过程参数#region 生成存储过程参数
        生成存储过程参数#region 生成存储过程参数
198
 /**//// <summary>
        /**//// <summary> 
199 /// 生成存储过程参数
        /// 生成存储过程参数 
200 /// </summary>
        /// </summary> 
201 /// <param name="ParamName">存储过程名称</param>
        /// <param name="ParamName">存储过程名称</param> 
202 /// <param name="DbType">参数类型</param>
        /// <param name="DbType">参数类型</param> 
203 /// <param name="Size">参数大小</param>
        /// <param name="Size">参数大小</param> 
204 /// <param name="Direction">参数方向</param>
        /// <param name="Direction">参数方向</param> 
205 /// <param name="Value">参数值</param>
        /// <param name="Value">参数值</param> 
206 /// <returns>新的 parameter 对象</returns>
        /// <returns>新的 parameter 对象</returns> 
207 public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
        public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
208
 
         {
{
209 SqlParameter param;
            SqlParameter param;
210
211 if (Size > 0)
            if (Size > 0)
212 param = new SqlParameter(ParamName, DbType, Size);
                param = new SqlParameter(ParamName, DbType, Size);
213 else
            else
214 param = new SqlParameter(ParamName, DbType);
                param = new SqlParameter(ParamName, DbType);
215
216 param.Direction = Direction;
            param.Direction = Direction;
217 if (!(Direction == ParameterDirection.Output && Value == null))
            if (!(Direction == ParameterDirection.Output && Value == null))
218 param.Value = Value;
                param.Value = Value;
219
220 return param;
            return param;
221 }
        }
222 #endregion
        #endregion
223
224
 将DataReader 转为 DataTable#region 将DataReader 转为 DataTable
        将DataReader 转为 DataTable#region 将DataReader 转为 DataTable
225
 /**//// <summary>
        /**//// <summary> 
226 /// 将DataReader 转为 DataTable
        /// 将DataReader 转为 DataTable 
227 /// </summary>
        /// </summary> 
228 /// <param name="DataReader">DataReader</param>
        /// <param name="DataReader">DataReader</param> 
229 public static DataTable ConvertDataReaderToDataTable(SqlDataReader reader)
        public static DataTable ConvertDataReaderToDataTable(SqlDataReader reader)
230
 
         {
{
231 try
            try
232
 
             {
{
233
234 DataTable objDataTable = new DataTable();
                DataTable objDataTable = new DataTable();
235 int intFieldCount = reader.FieldCount;
                int intFieldCount = reader.FieldCount;
236 for (int intCounter = 0; intCounter < intFieldCount; ++intCounter)
                for (int intCounter = 0; intCounter < intFieldCount; ++intCounter)
237
 
                 {
{
238 objDataTable.Columns.Add(reader.GetName(intCounter), reader.GetFieldType(intCounter));
                    objDataTable.Columns.Add(reader.GetName(intCounter), reader.GetFieldType(intCounter));
239 }
                }
240
241 objDataTable.BeginLoadData();
                objDataTable.BeginLoadData();
242
243 object[] objValues = new object[intFieldCount];
                object[] objValues = new object[intFieldCount];
244 while (reader.Read())
                while (reader.Read())
245
 
                 {
{
246 reader.GetValues(objValues);
                    reader.GetValues(objValues);
247 objDataTable.LoadDataRow(objValues, true);
                    objDataTable.LoadDataRow(objValues, true);
248 }
                }
249 reader.Close();
                reader.Close();
250 objDataTable.EndLoadData();
                objDataTable.EndLoadData();
251
252 return objDataTable;
                return objDataTable;
253
254 }
            }
255 catch (Exception ex)
            catch (Exception ex)
256
 
             {
{
257 throw new Exception("转换DataReader为DataTable出错!", ex);
                throw new Exception("转换DataReader为DataTable出错!", ex);
258 }
            }
259
260 }
        }
261 #endregion
        #endregion
262
263
 数字判定#region 数字判定
        数字判定#region 数字判定
264
 /**//// <summary>
        /**//// <summary> 
265 /// 数字判定
        /// 数字判定 
266 /// </summary>
        /// </summary> 
267 /// <param name="str">字符串参数</param>
        /// <param name="str">字符串参数</param> 
268 public static bool IsNumber(String strNumber)
        public static bool IsNumber(String strNumber)
269
 
         {
{
270 Regex objNotNumberPattern = new Regex("[^0-9.-]");
            Regex objNotNumberPattern = new Regex("[^0-9.-]");
271 Regex objTwoDotPattern = new Regex("[0-9]*[.][0-9]*[.][0-9]*");
            Regex objTwoDotPattern = new Regex("[0-9]*[.][0-9]*[.][0-9]*");
272 Regex objTwoMinusPattern = new Regex("[0-9]*[-][0-9]*[-][0-9]*");
            Regex objTwoMinusPattern = new Regex("[0-9]*[-][0-9]*[-][0-9]*");
273 String strValidRealPattern = "^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$";
            String strValidRealPattern = "^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$";
274 String strValidIntegerPattern = "^([-]|[0-9])[0-9]*$";
            String strValidIntegerPattern = "^([-]|[0-9])[0-9]*$";
275 Regex objNumberPattern = new Regex("(" + strValidRealPattern + ")|(" + strValidIntegerPattern + ")");
            Regex objNumberPattern = new Regex("(" + strValidRealPattern + ")|(" + strValidIntegerPattern + ")");
276
277 return !objNotNumberPattern.IsMatch(strNumber) &&
            return !objNotNumberPattern.IsMatch(strNumber) &&
278 !objTwoDotPattern.IsMatch(strNumber) &&
            !objTwoDotPattern.IsMatch(strNumber) &&
279 !objTwoMinusPattern.IsMatch(strNumber) &&
            !objTwoMinusPattern.IsMatch(strNumber) &&
280 objNumberPattern.IsMatch(strNumber);
            objNumberPattern.IsMatch(strNumber);
281 }
        }
282 #endregion
        #endregion
283
284 }
    }
285 }
}
286 
 
      
  
  
 /**///////////////数据访问类
/**///////////////数据访问类 2
 using System;
using System;3
 using System.ComponentModel;
using System.ComponentModel;4
 using System.Collections;
using System.Collections;5
 using System.Web.Security;
using System.Web.Security;6
 using System.Diagnostics;
using System.Diagnostics;7
 using System.Data;
using System.Data;8
 using System.Data.SqlClient;
using System.Data.SqlClient;9
 using System.Configuration;
using System.Configuration;10
 using System.Text.RegularExpressions;
using System.Text.RegularExpressions;11

12
 namespace WebApp.Components
namespace WebApp.Components13


 {
{14

 /**//// <summary>
    /**//// <summary> 15
 /// 通用的数据库处理类,通过ado.net与数据库连接
    /// 通用的数据库处理类,通过ado.net与数据库连接 16
 /// </summary>
    /// </summary> 17
 public class Database : IDisposable
    public class Database : IDisposable18

 
     {
{19
 // 连接数据源
        // 连接数据源 20
 private SqlConnection con;
        private SqlConnection con;21

22

 执行不带参数的存储过程,返回存储过程返回值#region 执行不带参数的存储过程,返回存储过程返回值
        执行不带参数的存储过程,返回存储过程返回值#region 执行不带参数的存储过程,返回存储过程返回值23

 /**//// <summary>
        /**//// <summary> 24
 /// 执行存储过程
        /// 执行存储过程 25
 /// </summary>
        /// </summary> 26
 /// <param name="procName">不带参数的存储过程的名称</param>
        /// <param name="procName">不带参数的存储过程的名称</param> 27
 /// <returns>返回存储过程返回值</returns>
        /// <returns>返回存储过程返回值</returns> 28
 public int RunProc(string procName)
        public int RunProc(string procName)29

 
         {
{30
 SqlCommand cmd = CreateCommand(procName, null);
            SqlCommand cmd = CreateCommand(procName, null);31
 cmd.ExecuteNonQuery();
            cmd.ExecuteNonQuery();32
 this.Close();
            this.Close();33
 return (int)cmd.Parameters["ReturnValue"].Value;
            return (int)cmd.Parameters["ReturnValue"].Value;34
 }
        }35
 #endregion
        #endregion36

37

 执行带参数的存储过程,返回存储过程返回值#region 执行带参数的存储过程,返回存储过程返回值
        执行带参数的存储过程,返回存储过程返回值#region 执行带参数的存储过程,返回存储过程返回值38

 /**//// <summary>
        /**//// <summary> 39
 /// 执行存储过程
        /// 执行存储过程 40
 /// </summary>
        /// </summary> 41
 /// <param name="procName">带参数存储过程名称</param>
        /// <param name="procName">带参数存储过程名称</param> 42
 /// <param name="prams">存储过程所需参数</param>
        /// <param name="prams">存储过程所需参数</param> 43
 /// <returns>返回存储过程返回值</returns>
        /// <returns>返回存储过程返回值</returns> 44
 public int RunProc(string procName, SqlParameter[] prams)
        public int RunProc(string procName, SqlParameter[] prams)45

 
         {
{46
 SqlCommand cmd = CreateCommand(procName, prams);
            SqlCommand cmd = CreateCommand(procName, prams);47
 cmd.ExecuteNonQuery();
            cmd.ExecuteNonQuery();48
 this.Close();
            this.Close();49
 return (int)cmd.Parameters["ReturnValue"].Value;
            return (int)cmd.Parameters["ReturnValue"].Value;50
 }
        }51
 #endregion
        #endregion52

53

 执行不带参数的存储过程,通过输出参数返回SqlDataReader对象#region 执行不带参数的存储过程,通过输出参数返回SqlDataReader对象
        执行不带参数的存储过程,通过输出参数返回SqlDataReader对象#region 执行不带参数的存储过程,通过输出参数返回SqlDataReader对象54

 /**//// <summary>
        /**//// <summary> 55
 /// 执行存储过程
        /// 执行存储过程 56
 /// </summary>
        /// </summary> 57
 /// <param name="procName">不带参数的存储过程的名称</param>
        /// <param name="procName">不带参数的存储过程的名称</param> 58
 /// <param name="dataReader">通过输出参数返回SqlDataReader对象</param>
        /// <param name="dataReader">通过输出参数返回SqlDataReader对象</param> 59
 public void RunProc(string procName, out SqlDataReader dataReader)
        public void RunProc(string procName, out SqlDataReader dataReader)60

 
         {
{61
 SqlCommand cmd = CreateCommand(procName, null);
            SqlCommand cmd = CreateCommand(procName, null);62
 dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
            dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);63
 }
        }64
 #endregion
        #endregion65

66

 执行带参数的存储过程,通过输出参数返回SqlDataReader对象#region 执行带参数的存储过程,通过输出参数返回SqlDataReader对象
        执行带参数的存储过程,通过输出参数返回SqlDataReader对象#region 执行带参数的存储过程,通过输出参数返回SqlDataReader对象67

 /**//// <summary>
        /**//// <summary> 68
 /// 执行存储过程
        /// 执行存储过程 69
 /// </summary>
        /// </summary> 70
 /// <param name="procName">带参数的存储过程的名称</param>
        /// <param name="procName">带参数的存储过程的名称</param> 71
 /// <param name="prams">存储过程所需参数</param>
        /// <param name="prams">存储过程所需参数</param> 72
 /// <param name="dataReader">通过输出参数返回SqlDataReader对象</param>
        /// <param name="dataReader">通过输出参数返回SqlDataReader对象</param> 73
 public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
        public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)74

 
         {
{75
 SqlCommand cmd = CreateCommand(procName, prams);
            SqlCommand cmd = CreateCommand(procName, prams);76
 dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
            dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);77
 }
        }78
 #endregion
        #endregion79

80

 创建SqlCommand对象#region 创建SqlCommand对象
        创建SqlCommand对象#region 创建SqlCommand对象81

 /**//// <summary>
        /**//// <summary> 82
 /// 创建一个SqlCommand对象以此来执行存储过程
        /// 创建一个SqlCommand对象以此来执行存储过程 83
 /// </summary>
        /// </summary> 84
 /// <param name="procName">存储过程的名称</param>
        /// <param name="procName">存储过程的名称</param> 85
 /// <param name="prams">存储过程所需参数</param>
        /// <param name="prams">存储过程所需参数</param> 86
 /// <returns>返回SqlCommand对象</returns>
        /// <returns>返回SqlCommand对象</returns> 87
 private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
        private SqlCommand CreateCommand(string procName, SqlParameter[] prams)88

 
         {
{89
 // 确认打开连接
            // 确认打开连接 90
 Open();
            Open();91
 SqlCommand cmd = new SqlCommand(procName, con);
            SqlCommand cmd = new SqlCommand(procName, con);92
 cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandType = CommandType.StoredProcedure;93

94
 // 依次把参数传入存储过程
            // 依次把参数传入存储过程 95
 if (prams != null)
            if (prams != null)96

 
             {
{97
 foreach (SqlParameter parameter in prams)
                foreach (SqlParameter parameter in prams)98
 cmd.Parameters.Add(parameter);
                    cmd.Parameters.Add(parameter);99
 }
            }100

101
 // 加入返回参数
            // 加入返回参数 102
 cmd.Parameters.Add(
            cmd.Parameters.Add(103
 new SqlParameter("ReturnValue", SqlDbType.Int, 4,
            new SqlParameter("ReturnValue", SqlDbType.Int, 4,104
 ParameterDirection.ReturnValue, false, 0, 0,
            ParameterDirection.ReturnValue, false, 0, 0,105
 string.Empty, DataRowVersion.Default, null));
            string.Empty, DataRowVersion.Default, null));106

107
 return cmd;
            return cmd;108
 }
        }109
 #endregion
        #endregion110

111

 打开数据库连接#region 打开数据库连接
        打开数据库连接#region 打开数据库连接112

 /**//// <summary>
        /**//// <summary> 113
 /// 打开数据库连接.
        /// 打开数据库连接. 114
 /// </summary>
        /// </summary> 115
 private void Open()
        private void Open()116

 
         {
{117
 // 打开数据库连接
            // 打开数据库连接 118
 if (con == null)
            if (con == null)119

 
             {
{120
 con = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
                con = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);121
 }
            }122
 if (con.State == System.Data.ConnectionState.Closed)
            if (con.State == System.Data.ConnectionState.Closed)123
 con.Open();
                con.Open();124

125
 }
        }126
 #endregion
        #endregion127

128

 关闭数据库连接#region 关闭数据库连接
        关闭数据库连接#region 关闭数据库连接129

 /**//// <summary>
        /**//// <summary> 130
 /// 关闭数据库连接
        /// 关闭数据库连接 131
 /// </summary>
        /// </summary> 132
 public void Close()
        public void Close()133

 
         {
{134
 if (con != null)
            if (con != null)135
 con.Close();
                con.Close();136
 }
        }137
 #endregion
        #endregion138

139

 释放资源#region 释放资源
        释放资源#region 释放资源140

 /**//// <summary>
        /**//// <summary> 141
 /// 释放资源
        /// 释放资源 142
 /// </summary>
        /// </summary> 143
 public void Dispose()
        public void Dispose()144

 
         {
{145
 // 确认连接是否已经关闭
            // 确认连接是否已经关闭 146
 if (con != null)
            if (con != null)147

 
             {
{148
 con.Dispose();
                con.Dispose();149
 con = null;
                con = null;150
 }
            }151
 }
        }152
 #endregion
        #endregion153

154

 传入输入参数#region 传入输入参数
        传入输入参数#region 传入输入参数155

 /**//// <summary>
        /**//// <summary> 156
 /// 传入输入参数
        /// 传入输入参数 157
 /// </summary>
        /// </summary> 158
 /// <param name="ParamName">存储过程名称</param>
        /// <param name="ParamName">存储过程名称</param> 159
 /// <param name="DbType">参数类型</param>
        /// <param name="DbType">参数类型</param> 160
 /// <param name="Size">参数大小</param>
        /// <param name="Size">参数大小</param> 161
 /// <param name="Value">参数值</param>
        /// <param name="Value">参数值</param> 162
 /// <returns>新的 parameter 对象</returns>
        /// <returns>新的 parameter 对象</returns> 163
 public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)
        public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)164

 
         {
{165
 return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
            return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);166
 }
        }167
 #endregion
        #endregion168

169

 传入输出参数#region 传入输出参数
        传入输出参数#region 传入输出参数170

 /**//// <summary>
        /**//// <summary> 171
 /// 传入输出参数
        /// 传入输出参数 172
 /// </summary>
        /// </summary> 173
 /// <param name="ParamName">存储过程名称</param>
        /// <param name="ParamName">存储过程名称</param> 174
 /// <param name="DbType">参数类型</param>
        /// <param name="DbType">参数类型</param> 175
 /// <param name="Size">参数大小</param>
        /// <param name="Size">参数大小</param> 176
 /// <returns>新的 parameter 对象</returns>
        /// <returns>新的 parameter 对象</returns> 177
 public SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size)
        public SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size)178

 
         {
{179
 return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
            return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);180
 }
        }181
 #endregion
        #endregion182

183

 传入返回值参数#region 传入返回值参数
        传入返回值参数#region 传入返回值参数184

 /**//// <summary>
        /**//// <summary> 185
 /// 传入返回值参数
        /// 传入返回值参数 186
 /// </summary>
        /// </summary> 187
 /// <param name="ParamName">存储过程名称</param>
        /// <param name="ParamName">存储过程名称</param> 188
 /// <param name="DbType">参数类型</param>
        /// <param name="DbType">参数类型</param> 189
 /// <param name="Size">参数大小</param>
        /// <param name="Size">参数大小</param> 190
 /// <returns>新的 parameter 对象</returns>
        /// <returns>新的 parameter 对象</returns> 191
 public SqlParameter MakeReturnParam(string ParamName, SqlDbType DbType, int Size)
        public SqlParameter MakeReturnParam(string ParamName, SqlDbType DbType, int Size)192

 
         {
{193
 return MakeParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
            return MakeParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);194
 }
        }195
 #endregion
        #endregion196

197

 生成存储过程参数#region 生成存储过程参数
        生成存储过程参数#region 生成存储过程参数198

 /**//// <summary>
        /**//// <summary> 199
 /// 生成存储过程参数
        /// 生成存储过程参数 200
 /// </summary>
        /// </summary> 201
 /// <param name="ParamName">存储过程名称</param>
        /// <param name="ParamName">存储过程名称</param> 202
 /// <param name="DbType">参数类型</param>
        /// <param name="DbType">参数类型</param> 203
 /// <param name="Size">参数大小</param>
        /// <param name="Size">参数大小</param> 204
 /// <param name="Direction">参数方向</param>
        /// <param name="Direction">参数方向</param> 205
 /// <param name="Value">参数值</param>
        /// <param name="Value">参数值</param> 206
 /// <returns>新的 parameter 对象</returns>
        /// <returns>新的 parameter 对象</returns> 207
 public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
        public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)208

 
         {
{209
 SqlParameter param;
            SqlParameter param;210

211
 if (Size > 0)
            if (Size > 0)212
 param = new SqlParameter(ParamName, DbType, Size);
                param = new SqlParameter(ParamName, DbType, Size);213
 else
            else214
 param = new SqlParameter(ParamName, DbType);
                param = new SqlParameter(ParamName, DbType);215

216
 param.Direction = Direction;
            param.Direction = Direction;217
 if (!(Direction == ParameterDirection.Output && Value == null))
            if (!(Direction == ParameterDirection.Output && Value == null))218
 param.Value = Value;
                param.Value = Value;219

220
 return param;
            return param;221
 }
        }222
 #endregion
        #endregion223

224

 将DataReader 转为 DataTable#region 将DataReader 转为 DataTable
        将DataReader 转为 DataTable#region 将DataReader 转为 DataTable225

 /**//// <summary>
        /**//// <summary> 226
 /// 将DataReader 转为 DataTable
        /// 将DataReader 转为 DataTable 227
 /// </summary>
        /// </summary> 228
 /// <param name="DataReader">DataReader</param>
        /// <param name="DataReader">DataReader</param> 229
 public static DataTable ConvertDataReaderToDataTable(SqlDataReader reader)
        public static DataTable ConvertDataReaderToDataTable(SqlDataReader reader)230

 
         {
{231
 try
            try232

 
             {
{233

234
 DataTable objDataTable = new DataTable();
                DataTable objDataTable = new DataTable();235
 int intFieldCount = reader.FieldCount;
                int intFieldCount = reader.FieldCount;236
 for (int intCounter = 0; intCounter < intFieldCount; ++intCounter)
                for (int intCounter = 0; intCounter < intFieldCount; ++intCounter)237

 
                 {
{238
 objDataTable.Columns.Add(reader.GetName(intCounter), reader.GetFieldType(intCounter));
                    objDataTable.Columns.Add(reader.GetName(intCounter), reader.GetFieldType(intCounter));239
 }
                }240

241
 objDataTable.BeginLoadData();
                objDataTable.BeginLoadData();242

243
 object[] objValues = new object[intFieldCount];
                object[] objValues = new object[intFieldCount];244
 while (reader.Read())
                while (reader.Read())245

 
                 {
{246
 reader.GetValues(objValues);
                    reader.GetValues(objValues);247
 objDataTable.LoadDataRow(objValues, true);
                    objDataTable.LoadDataRow(objValues, true);248
 }
                }249
 reader.Close();
                reader.Close();250
 objDataTable.EndLoadData();
                objDataTable.EndLoadData();251

252
 return objDataTable;
                return objDataTable;253

254
 }
            }255
 catch (Exception ex)
            catch (Exception ex)256

 
             {
{257
 throw new Exception("转换DataReader为DataTable出错!", ex);
                throw new Exception("转换DataReader为DataTable出错!", ex);258
 }
            }259

260
 }
        }261
 #endregion
        #endregion262

263

 数字判定#region 数字判定
        数字判定#region 数字判定264

 /**//// <summary>
        /**//// <summary> 265
 /// 数字判定
        /// 数字判定 266
 /// </summary>
        /// </summary> 267
 /// <param name="str">字符串参数</param>
        /// <param name="str">字符串参数</param> 268
 public static bool IsNumber(String strNumber)
        public static bool IsNumber(String strNumber)269

 
         {
{270
 Regex objNotNumberPattern = new Regex("[^0-9.-]");
            Regex objNotNumberPattern = new Regex("[^0-9.-]");271
 Regex objTwoDotPattern = new Regex("[0-9]*[.][0-9]*[.][0-9]*");
            Regex objTwoDotPattern = new Regex("[0-9]*[.][0-9]*[.][0-9]*");272
 Regex objTwoMinusPattern = new Regex("[0-9]*[-][0-9]*[-][0-9]*");
            Regex objTwoMinusPattern = new Regex("[0-9]*[-][0-9]*[-][0-9]*");273
 String strValidRealPattern = "^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$";
            String strValidRealPattern = "^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$";274
 String strValidIntegerPattern = "^([-]|[0-9])[0-9]*$";
            String strValidIntegerPattern = "^([-]|[0-9])[0-9]*$";275
 Regex objNumberPattern = new Regex("(" + strValidRealPattern + ")|(" + strValidIntegerPattern + ")");
            Regex objNumberPattern = new Regex("(" + strValidRealPattern + ")|(" + strValidIntegerPattern + ")");276

277
 return !objNotNumberPattern.IsMatch(strNumber) &&
            return !objNotNumberPattern.IsMatch(strNumber) &&278
 !objTwoDotPattern.IsMatch(strNumber) &&
            !objTwoDotPattern.IsMatch(strNumber) &&279
 !objTwoMinusPattern.IsMatch(strNumber) &&
            !objTwoMinusPattern.IsMatch(strNumber) &&280
 objNumberPattern.IsMatch(strNumber);
            objNumberPattern.IsMatch(strNumber);281
 }
        }282
 #endregion
        #endregion283

284
 }
    }285
 }
}286
 
 
来源:https://www.cnblogs.com/honeydancer/archive/2009/09/09/1563329.html