SqlHelper

SqlHelp1

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Web;
  5 
  6 using System.Configuration;
  7 using System.Data;
  8 using System.Data.SqlClient;
  9 using System.Web.UI.WebControls;
 10 
 11 namespace _20160308
 12 {
 13     public class SqlHelper1
 14     {
 15         #region 连接字符串connStr
 16         private static readonly string connStr = ConfigurationManager.ConnectionStrings["aspcourse"].ConnectionString;
 17         #endregion
 18 
 19         #region ExecuteNonQuery执行非查询语句--不是Select 而是Insert into, Delete where, Update where
 20         /// <summary>
 21         /// 执行非查询语句
 22         /// </summary>
 23         /// <param name="sql">要执行的Sql语句(也可能是存储过程的名字,目前还不知道那时撒东东)</param>
 24         /// <param name="cmdType">要执行的类型(是存储过程还)是Sql语句[记得查下存储过程是什么鬼]</param>
 25         /// <param name="param">要执行的Sql语句的数组,params是可选参数,0个或者多个.可选参数只能放在最后---语法规定,No Why!</param>
 26         /// <returns>返回受影响的行数---也就是查询到的记录数嘛</returns>
 27         public static int ExecuteNonQuery(string sql, CommandType cmdType, params SqlParameter[] param)
 28         {
 29             using(SqlConnection conn = new SqlConnection(connStr))
 30             {
 31                 conn.Open();                               
 32                 using(SqlCommand cmd = new SqlCommand(sql, conn))
 33                 {
 34                     cmd.CommandType = cmdType;
 35                     if (param != null && param.Length > 0)
 36                     {
 37                         cmd.Parameters.AddRange(param);
 38                     }
 39                     int Add_Rows = cmd.ExecuteNonQuery();
 40                     cmd.Parameters.Clear();//清空SqlCommand的参数列表---看出来没,param是SqlCommand对象的.
 41                     return Add_Rows;
 42                 }
 43             }
 44         }
 45         #endregion
 46 
 47         #region ExecuteScalar执行查询语句---select
 48         /// <summary>
 49         /// 执行查询语句
 50         /// </summary>
 51         /// <param name="sql">要执行的Sql语句(也可能是存储过程的名字,目前还不知道那时撒东东)</param>
 52         /// <param name="cmdType">要执行的类型(是存储过程还)是Sql语句[记得查下存储过程是什么鬼]</param>
 53         /// <param name="param">要执行的Sql语句的数组,params是可选参数,0个或者多个.可选参数只能放在最后---语法规定,No Why!</param>
 54         /// <returns>返回所查询的结果集的第一行第一列----注意是object类型(为撒不用泛型呢?-->记得改)</returns>
 55         public static object ExecuteScalar(string sql, CommandType cmdType, params SqlParameter[] param)
 56         {
 57             using (SqlConnection conn = new SqlConnection(connStr))
 58             {
 59                 conn.Open();
 60                 using (SqlCommand cmd = new SqlCommand(sql, conn))
 61                 {
 62                     cmd.CommandType = cmdType;
 63                     if (param != null && param.Length > 0)
 64                     {
 65                         cmd.Parameters.AddRange(param);
 66                     }
 67 
 68                     cmd.Parameters.Clear();//清空SqlCommand的参数列表---看出来没,param是SqlCommand对象的.
 69                     return cmd.ExecuteScalar();
 70                 }
 71             }
 72         }
 73         #endregion
 74 
 75         #region 读取ExecuteReader--要求一直连接着
 76         /// <summary>
 77         ///  读取DataReader
 78         /// </summary>
 79         /// <param name="sql">要执行的Sql语句(也可能是存储过程的名字,目前还不知道那时撒东东)</param>
 80         /// <param name="cmdType">要执行的类型(是存储过程还)是Sql语句[记得查下存储过程是什么鬼]</param>
 81         /// <param name="param">要执行的Sql语句的数组,params是可选参数,0个或者多个.可选参数只能放在最后---语法规定,No Why!</param>
 82         /// <returns>返回SqlDataReader对象</returns>
 83         public static SqlDataReader ExecuteReader(string sql, CommandType cmdType, params SqlParameter[] param)
 84         {
 85             //额,为什么不用using是吧,因为数据库要一直连着啊.---如果我没猜错的话.
 86             SqlConnection conn = new SqlConnection(connStr);
 87             SqlCommand cmd = new SqlCommand(sql, conn);
 88             SqlDataReader dr = null;
 89             try
 90             {
 91                 conn.Open();
 92                 if (conn.State != ConnectionState.Open)
 93                     throw new Exception();
 94                 cmd.CommandType = cmdType;
 95                 if (param != null && param.Length > 0)
 96                 {
 97                     cmd.Parameters.AddRange(param);
 98                 }
 99 
100                 dr = cmd.ExecuteReader();                
101             }
102             catch
103             {
104                //what should I do?
105                //可以什么都不做,哥直接抛给上层的catch--对否?
106             }
107             finally
108             {
109                 cmd.Parameters.Clear();//清空SqlCommand的参数列表---看出来没,param是SqlCommand对象的.                
110             }
111             return dr;
112         }
113         #endregion
114 
115         #region 获得GetDataTable
116         /// <summary>
117         /// 获得DataTable
118         /// </summary>
119         /// <param name="sql">要执行的Sql语句(也可能是存储过程的名字,目前还不知道那时撒东东)</param>
120         /// <param name="cmdType">要执行的类型(是存储过程还)是Sql语句[记得查下存储过程是什么鬼]</param>
121         /// <param name="param">要执行的Sql语句的数组,params是可选参数,0个或者多个.可选参数只能放在最后---语法规定,No Why!</param>
122         /// <returns>返回DataTable数据表</returns>      
123         public static DataTable GetDataTable(string sql, CommandType cmdType, params SqlParameter[] param)
124         {
125             using(SqlConnection conn = new SqlConnection(connStr))
126             {
127                 conn.Open();
128                 using(SqlCommand cmd = new SqlCommand(sql,conn))
129                 {
130                     cmd.CommandType = cmdType;
131                     if (param != null && param.Length > 0)
132                     {
133                         cmd.Parameters.AddRange(param);
134                     }
135                     SqlDataAdapter adapter = new SqlDataAdapter(cmd);
136                     //就一张表,可以获得多张表吗?
137                     DataTable tb = new DataTable();
138                     adapter.Fill(tb);
139                     return tb;
140                 }
141             }
142         }
143         #endregion
144 
145         #region 获得GetDataSet
146         /// <summary>
147         /// 获得DataSet
148         /// </summary>
149         /// <param name="sql">要执行的Sql语句(也可能是存储过程的名字,目前还不知道那时撒东东)</param>
150         /// <param name="cmdType">要执行的类型(是存储过程还)是Sql语句[记得查下存储过程是什么鬼]</param>
151         /// <param name="param">要执行的Sql语句的数组,params是可选参数,0个或者多个.可选参数只能放在最后---语法规定,No Why!</param>
152         /// <returns>返回一个DataSet数据集</returns>
153         public static DataSet GetDataSet(string sql, CommandType cmdType, params SqlParameter[] param)
154         {
155             using (SqlConnection conn = new SqlConnection(connStr))
156             {
157                 conn.Open();
158                 using (SqlCommand cmd = new SqlCommand(sql, conn))
159                 {
160                     cmd.CommandType = cmdType;
161                     if (param != null && param.Length > 0)
162                     {
163                         cmd.Parameters.AddRange(param);
164                     }
165                     SqlDataAdapter adapter = new SqlDataAdapter(cmd);
166                     DataSet ds = new DataSet();
167                     adapter.Fill(ds);
168                     return ds;
169                 }
170             }
171         }
172         #endregion
173     }
174 }
SqlHelper1

SqlHelp2

  1 using System.Collections.Generic;
  2 using System.Text;
  3 using System.Data;
  4 using System.Data.SqlClient;
  5 using System.Collections;
  6 using System.Configuration;
  7 using System;
  8 
  9 namespace ASP20170211
 10 {
 11     /// 此类为抽象类,
 12     /// 不允许实例化,在应用时直接调用即可
 13     /// </summary>
 14     public abstract class SqlHelper
 15     {
 16         /// <summary>
 17         /// 数据库连接字符串
 18         /// </summary>
 19         public static readonly string connectionString = ConfigurationManager.ConnectionStrings["sq_ruanmou"].ToString(); 
 20         // Hashtable to store cached parameters
 21         private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
 22 
 23         #region//ExecteNonQuery方法
 24         /// <summary>
 25         ///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。
 26         /// 使用参数数组形式提供参数列表 
 27         /// </summary>
 28         /// <param name="connectionString">一个有效的数据库连接字符串</param>
 29         /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
 30         /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
 31         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
 32         /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>
 33         public static int ExecteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
 34         {
 35             SqlCommand cmd = new SqlCommand();
 36             using (SqlConnection conn = new SqlConnection(connectionString))
 37             {
 38                 //通过PrePareCommand方法将参数逐个加入到SqlCommand的参数集合中
 39                 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
 40                 int val = cmd.ExecuteNonQuery();
 41                 //清空SqlCommand中的参数列表
 42                 cmd.Parameters.Clear();
 43                 return val;
 44             }
 45         }
 46 
 47         /// <summary>
 48         ///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。
 49         /// 使用参数数组形式提供参数列表 
 50         /// </summary>
 51         /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
 52         /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
 53         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
 54         /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>
 55         public static int ExecteNonQuery(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
 56         {
 57             return ExecteNonQuery(connectionString ,cmdType, cmdText, commandParameters);
 58         }
 59 
 60         /// <summary>
 61         ///存储过程专用
 62         /// </summary>
 63         /// <param name="cmdText">存储过程的名字</param>
 64         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
 65         /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>
 66         public static int ExecteNonQueryProducts(string cmdText, params SqlParameter[] commandParameters)
 67         {
 68             return ExecteNonQuery(CommandType.StoredProcedure, cmdText, commandParameters);
 69         }
 70 
 71         /// <summary>
 72         ///Sql语句专用
 73         /// </summary>
 74         /// <param name="cmdText">T_Sql语句</param>
 75         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
 76         /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>
 77         public static int ExecteNonQueryText(string cmdText, params SqlParameter[] commandParameters)
 78         {
 79             return ExecteNonQuery(CommandType.Text, cmdText, commandParameters);
 80         }
 81 
 82         #endregion
 83         #region//GetTable方法
 84 
 85         /// <summary>
 86         /// 执行一条返回结果集的SqlCommand,通过一个已经存在的数据库连接
 87         /// 使用参数数组提供参数
 88         /// </summary>
 89         /// <param name="connecttionString">一个现有的数据库连接</param>
 90         /// <param name="cmdTye">SqlCommand命令类型</param>
 91         /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
 92         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
 93         /// <returns>返回一个表集合(DataTableCollection)表示查询得到的数据集</returns>
 94         public static DataTableCollection GetTable(string connecttionString, CommandType cmdTye, string cmdText, SqlParameter[] commandParameters)
 95         {
 96             SqlCommand cmd = new SqlCommand();
 97             DataSet ds = new DataSet();
 98             using (SqlConnection conn = new SqlConnection(connecttionString))
 99             {
100                 PrepareCommand(cmd, conn, null, cmdTye, cmdText, commandParameters);
101                 SqlDataAdapter adapter = new SqlDataAdapter();
102                 adapter.SelectCommand = cmd;
103                 adapter.Fill(ds);
104             }
105             DataTableCollection table = ds.Tables;
106             return table;
107         }
108 
109         /// <summary>
110         /// 执行一条返回结果集的SqlCommand,通过一个已经存在的数据库连接
111         /// 使用参数数组提供参数
112         /// </summary>
113         /// <param name="cmdTye">SqlCommand命令类型</param>
114         /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
115         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
116         /// <returns>返回一个表集合(DataTableCollection)表示查询得到的数据集</returns>
117         public static DataTableCollection GetTable(CommandType cmdTye, string cmdText, SqlParameter[] commandParameters)
118         {
119             return GetTable(cmdTye, cmdText, commandParameters);
120         }
121 
122 
123         /// <summary>
124         /// 存储过程专用
125         /// </summary>
126         /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
127         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
128         /// <returns>返回一个表集合(DataTableCollection)表示查询得到的数据集</returns>
129         public static DataTableCollection GetTableProducts(string cmdText, SqlParameter[] commandParameters)
130         {
131             return GetTable(CommandType.StoredProcedure, cmdText, commandParameters);
132         }
133 
134         /// <summary>
135         /// Sql语句专用
136         /// </summary>
137         /// <param name="cmdText"> T-SQL 语句</param>
138         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
139         /// <returns>返回一个表集合(DataTableCollection)表示查询得到的数据集</returns>
140         public static DataTableCollection GetTableText(string cmdText, SqlParameter[] commandParameters)
141         {
142             return GetTable(CommandType.Text, cmdText, commandParameters);
143         }
144         #endregion
145 
146 
147         /// <summary>
148         /// 为执行命令准备参数
149         /// </summary>
150         /// <param name="cmd">SqlCommand 命令</param>
151         /// <param name="conn">已经存在的数据库连接</param>
152         /// <param name="trans">数据库事物处理</param>
153         /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
154         /// <param name="cmdText">Command text,T-SQL语句 例如 Select * from Products</param>
155         /// <param name="cmdParms">返回带参数的命令</param>
156         private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
157         {
158             //判断数据库连接状态
159             if (conn.State != ConnectionState.Open)
160                 conn.Open();
161             cmd.Connection = conn;
162             cmd.CommandText = cmdText;
163             //判断是否需要事物处理
164             if (trans != null)
165                 cmd.Transaction = trans;
166             cmd.CommandType = cmdType;
167             if (cmdParms != null)
168             {
169                 foreach (SqlParameter parm in cmdParms)
170                     if (parm != null)
171                     {
172                         cmd.Parameters.Add(parm);
173                     }
174             }
175         }
176 
177         /// <summary>
178         /// Execute a SqlCommand that returns a resultset against the database specified in the connection string 
179         /// using the provided parameters.
180         /// </summary>
181         /// <param name="connectionString">一个有效的数据库连接字符串</param>
182         /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
183         /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
184         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
185         /// <returns>A SqlDataReader containing the results</returns>
186         public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
187         {
188             SqlCommand cmd = new SqlCommand();
189             SqlConnection conn = new SqlConnection(connectionString);
190             // we use a try/catch here because if the method throws an exception we want to 
191             // close the connection throw code, because no datareader will exist, hence the 
192             // commandBehaviour.CloseConnection will not work
193             try
194             {
195                 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
196                 SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
197                 cmd.Parameters.Clear();
198                 return rdr;
199             }
200             catch
201             {
202                 conn.Close();
203                 throw;
204             }
205         }
206         #region//ExecuteDataSet方法
207 
208         /// <summary>
209         /// return a dataset
210         /// </summary>
211         /// <param name="connectionString">一个有效的数据库连接字符串</param>
212         /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
213         /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
214         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
215         /// <returns>return a dataset</returns>
216         public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
217         {
218             SqlConnection conn = new SqlConnection(connectionString);
219             SqlCommand cmd = new SqlCommand();
220             try
221             {
222                 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
223                 SqlDataAdapter da = new SqlDataAdapter();
224                 DataSet ds = new DataSet();
225                 da.SelectCommand = cmd;
226                 da.Fill(ds);
227                 return ds;
228             }
229             catch
230             {
231                 conn.Close();
232                 throw;
233             }
234         }
235 
236 
237         /// <summary>
238         /// 返回一个DataSet
239         /// </summary>
240         /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
241         /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
242         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
243         /// <returns>return a dataset</returns>
244         public static DataSet ExecuteDataSet(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
245         {
246             return ExecuteDataSet(connectionString, cmdType, cmdText, commandParameters);
247         }
248 
249         /// <summary>
250         /// 返回一个DataSet
251         /// </summary>
252         /// <param name="cmdText">存储过程的名字</param>
253         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
254         /// <returns>return a dataset</returns>
255         public static DataSet ExecuteDataSetProducts(string cmdText, params SqlParameter[] commandParameters)
256         {
257             return ExecuteDataSet(connectionString, CommandType.StoredProcedure, cmdText, commandParameters);
258         }
259 
260         /// <summary>
261         /// 返回一个DataSet
262         /// </summary>
263 
264         /// <param name="cmdText">T-SQL 语句</param>
265         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
266         /// <returns>return a dataset</returns>
267         public static DataSet ExecuteDataSetText(string cmdText, params SqlParameter[] commandParameters)
268         {
269             return ExecuteDataSet(connectionString, CommandType.Text, cmdText, commandParameters);
270         }
271 
272 
273         public static DataView ExecuteDataSet(string connectionString, string sortExpression, string direction, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
274         {
275             SqlConnection conn = new SqlConnection(connectionString);
276             SqlCommand cmd = new SqlCommand();
277             try
278             {
279                 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
280                 SqlDataAdapter da = new SqlDataAdapter();
281                 DataSet ds = new DataSet();
282                 da.SelectCommand = cmd;
283                 da.Fill(ds);
284                 DataView dv = ds.Tables[0].DefaultView;
285                 dv.Sort = sortExpression + " " + direction;
286                 return dv;
287             }
288             catch
289             {
290                 conn.Close();
291                 throw;
292             }
293         }
294         #endregion
295 
296 
297         #region // ExecuteScalar方法
298         /// <summary>
299         /// 返回第一行的第一列
300         /// </summary>
301         /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
302         /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
303         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
304         /// <returns>返回一个对象</returns>
305         public static object ExecuteScalar(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
306         {
307             return ExecuteScalar(SqlHelper.connectionString, cmdType, cmdText, commandParameters);
308         }
309 
310         /// <summary>
311         /// 返回第一行的第一列存储过程专用
312         /// </summary>
313         /// <param name="cmdText">存储过程的名字</param>
314         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
315         /// <returns>返回一个对象</returns>
316         public static object ExecuteScalarProducts(string cmdText, params SqlParameter[] commandParameters)
317         {
318             return ExecuteScalar(SqlHelper.connectionString, CommandType.StoredProcedure, cmdText, commandParameters);
319         }
320 
321         /// <summary>
322         /// 返回第一行的第一列Sql语句专用
323         /// </summary>
324         /// <param name="cmdText">者 T-SQL 语句</param>
325         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
326         /// <returns>返回一个对象</returns>
327         public static object ExecuteScalarText(string cmdText, params SqlParameter[] commandParameters)
328         {
329             return ExecuteScalar(SqlHelper.connectionString, CommandType.Text, cmdText, commandParameters);
330         }
331 
332         /// <summary>
333         /// Execute a SqlCommand that returns the first column of the first record against the database specified in the connection string 
334         /// using the provided parameters.
335         /// </summary>
336         /// <remarks>
337         /// e.g.:  
338         ///  Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
339         /// </remarks>
340         /// <param name="connectionString">一个有效的数据库连接字符串</param>
341         /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
342         /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
343         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
344         /// <returns>An object that should be converted to the expected type using Convert.To{Type}</returns>
345         public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
346         {
347             SqlCommand cmd = new SqlCommand();
348 
349             using (SqlConnection connection = new SqlConnection(connectionString))
350             {
351                 PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
352                 object val = cmd.ExecuteScalar();
353                 cmd.Parameters.Clear();
354                 return val;
355             }
356         }
357 
358         /// <summary>
359         /// Execute a SqlCommand that returns the first column of the first record against an existing database connection 
360         /// using the provided parameters.
361         /// </summary>
362         /// <remarks>
363         /// e.g.:  
364         ///  Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
365         /// </remarks>
366         /// <param name="connectionString">一个有效的数据库连接字符串</param>
367         /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
368         /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
369         /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
370         /// <returns>An object that should be converted to the expected type using Convert.To{Type}</returns>
371         public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
372         {
373             SqlCommand cmd = new SqlCommand();
374             PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
375             object val = cmd.ExecuteScalar();
376             cmd.Parameters.Clear();
377             return val;
378         }
379 
380         #endregion
381 
382 
383         /// <summary>
384         /// add parameter array to the cache
385         /// </summary>
386         /// <param name="cacheKey">Key to the parameter cache</param>
387         /// <param name="cmdParms">an array of SqlParamters to be cached</param>
388         public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters)
389         {
390             parmCache[cacheKey] = commandParameters;
391         }
392 
393         /// <summary>
394         /// Retrieve cached parameters
395         /// </summary>
396         /// <param name="cacheKey">key used to lookup parameters</param>
397         /// <returns>Cached SqlParamters array</returns>
398         public static SqlParameter[] GetCachedParameters(string cacheKey)
399         {
400             SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey];
401             if (cachedParms == null)
402                 return null;
403             SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length];
404             for (int i = 0, j = cachedParms.Length; i < j; i++)
405                 clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();
406             return clonedParms;
407         }
408 
409 
410         /// <summary>
411         /// 检查是否存在
412         /// </summary>
413         /// <param name="strSql">Sql语句</param>
414         /// <returns>bool结果</returns>
415         public static bool Exists(string strSql)
416         {
417             int cmdresult = Convert.ToInt32(ExecuteScalar(connectionString, CommandType.Text, strSql, null));
418             if (cmdresult == 0)
419             {
420                 return false;
421             }
422             else
423             {
424                 return true;
425             }
426         }
427 
428         /// <summary>
429         /// 检查是否存在
430         /// </summary>
431         /// <param name="strSql">Sql语句</param>
432         /// <param name="cmdParms">参数</param>
433         /// <returns>bool结果</returns>
434         public static bool Exists(string strSql, params SqlParameter[] cmdParms)
435         {
436             int cmdresult = Convert.ToInt32(ExecuteScalar(connectionString, CommandType.Text, strSql, cmdParms));
437             if (cmdresult == 0)
438             {
439                 return false;
440             }
441             else
442             {
443                 return true;
444             }
445         }
446     }
447 
448 }
Sqlhelper2

 

posted @ 2017-02-17 17:22  ~Jungle  Views(189)  Comments(0Edit  收藏  举报