博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开发常用工具类-持续更新中
阅读量:4556 次
发布时间:2019-06-08

本文共 33767 字,大约阅读时间需要 112 分钟。

1.SqlHelper

1 using System;  2 using System.Data;  3 using System.Xml;  4 using System.Data.SqlClient;  5 using System.Collections;  6 using System.Configuration;  7 using System.Collections.Specialized;  8   9 /********************************************| 10 * SQLHelper数据访问工具类  | 11 ********************************************/ 12 namespace Demo1 13 { 14     ///  15     /// SqlServer数据访问帮助类 16     /// 17     public sealed class SqlHelper 18     { 19         #region 私有构造函数和方法 20  21         private SqlHelper() { } 22  23         ///  24         /// 将SqlParameter参数数组(参数值)分配给SqlCommand命令. 25         /// 这个方法将给任何一个参数分配DBNull.Value; 26         /// 该操作将阻止默认值的使用. 27         /// 28         /// 命令名 29         /// SqlParameters数组 30         private static void AttachParameters(SqlCommand command, SqlParameter[] commandParameters) 31         { 32             if (command == null) throw new ArgumentNullException("command"); 33             if (commandParameters != null) 34             { 35                 foreach (SqlParameter p in commandParameters) 36                 { 37                     if (p != null) 38                     { 39                         // 检查未分配值的输出参数,将其分配以DBNull.Value. 40                         if ((p.Direction == ParameterDirection.InputOutput || p.Direction == ParameterDirection.Input) && (p.Value == null)) 41                         { 42                             p.Value = DBNull.Value; 43                         } 44                         command.Parameters.Add(p); 45                     } 46                 } 47             } 48         } 49  50         ///  51         /// 将DataRow类型的列值分配到SqlParameter参数数组. 52         /// 53         /// 要分配值的SqlParameter参数数组 54         /// 将要分配给存储过程参数的DataRow 55         private static void AssignParameterValues(SqlParameter[] commandParameters, DataRow dataRow) 56         { 57             if ((commandParameters == null) || (dataRow == null)) 58             { 59                 return; 60             } 61  62             int i = 0; 63             // 设置参数值 64             foreach (SqlParameter commandParameter in commandParameters) 65             { 66                 // 创建参数名称,如果不存在,只抛出一个异常. 67                 if (commandParameter.ParameterName == null || 68                 commandParameter.ParameterName.Length <= 1) 69                     throw new Exception( 70                     string.Format("请提供参数{0}一个有效的名称{1}.", i, commandParameter.ParameterName)); 71                 // 从dataRow的表中获取为参数数组中数组名称的列的索引. 72                 // 如果存在和参数名称相同的列,则将列值赋给当前名称的参数. 73                 if (dataRow.Table.Columns.IndexOf(commandParameter.ParameterName.Substring(1)) != -1) 74                     commandParameter.Value = dataRow[commandParameter.ParameterName.Substring(1)]; 75                 i++; 76             } 77         } 78  79         ///  80         /// 将一个对象数组分配给SqlParameter参数数组. 81         /// 82         /// 要分配值的SqlParameter参数数组 83         /// 将要分配给存储过程参数的对象数组 84         private static void AssignParameterValues(SqlParameter[] commandParameters, object[] parameterValues) 85         { 86             if ((commandParameters == null) || (parameterValues == null)) 87             { 88                 return; 89             } 90  91             // 确保对象数组个数与参数个数匹配,如果不匹配,抛出一个异常. 92             if (commandParameters.Length != parameterValues.Length) 93             { 94                 throw new ArgumentException("参数值个数与参数不匹配."); 95             } 96  97             // 给参数赋值 98             for (int i = 0, j = commandParameters.Length; i < j; i++) 99             {100                 // If the current array value derives from IDbDataParameter, then assign its Value property 101                 if (parameterValues[i] is IDbDataParameter)102                 {103                     IDbDataParameter paramInstance = (IDbDataParameter)parameterValues[i];104                     if (paramInstance.Value == null)105                     {106                         commandParameters[i].Value = DBNull.Value;107                     }108                     else109                     {110                         commandParameters[i].Value = paramInstance.Value;111                     }112                 }113                 else if (parameterValues[i] == null)114                 {115                     commandParameters[i].Value = DBNull.Value;116                 }117                 else118                 {119                     commandParameters[i].Value = parameterValues[i];120                 }121             }122         }123 124         /// 125         /// 预处理用户提供的命令,数据库连接/事务/命令类型/参数126         ///127         /// 要处理的SqlCommand128         /// 数据库连接129         /// 一个有效的事务或者是null值130         /// 命令类型 (存储过程,命令文本, 其它.)131         /// 存储过程名或都T-SQL命令文本132         /// 和命令相关联的SqlParameter参数数组,如果没有参数为'null'133         /// 
true
如果连接是打开的,则为true,其它情况下为false.134 private static void PrepareCommand(SqlCommand command, SqlConnection connection, SqlTransaction transaction, CommandType commandType, string commandText, SqlParameter[] commandParameters, out bool mustCloseConnection)135 {136 if (command == null) throw new ArgumentNullException("command");137 if (commandText == null || commandText.Length == 0) throw new ArgumentNullException("commandText");138 139 // If the provided connection is not open, we will open it140 if (connection.State != ConnectionState.Open)141 {142 mustCloseConnection = true;143 connection.Open();144 }145 else146 {147 mustCloseConnection = false;148 }149 150 // 给命令分配一个数据库连接.151 command.Connection = connection;152 153 // 设置命令文本(存储过程名或SQL语句)154 command.CommandText = commandText;155 156 // 分配事务157 if (transaction != null)158 {159 if (transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction");160 command.Transaction = transaction;161 }162 163 // 设置命令类型.164 command.CommandType = commandType;165 166 // 分配命令参数167 if (commandParameters != null)168 {169 AttachParameters(command, commandParameters);170 }171 return;172 }173 174 #endregion 私有构造函数和方法结束175 176 #region 数据库连接177 /// 178 /// 一个有效的数据库连接字符串179 ///180 ///
181 public static string GetConnSting()182 {183 string ab = string.Empty;184 185 return ConfigurationManager.AppSettings["ConnStr"];186 187 188 //NameValueCollection nodeName = (NameValueCollection)ConfigurationManager.GetSection("databaseSettings");189 //if (nodeName["connectionString"] == null || nodeName["connectionString"] == "")190 //{
191 // return string.Empty;192 //}193 //else194 //{
195 // return nodeName["connectionString"];196 //}197 198 //return "server=.,2008;database=gms;uid=sa;pwd=123456;";199 //return ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString;200 }201 /// 202 /// 一个有效的数据库连接对象203 ///204 ///
205 public static SqlConnection GetConnection()206 {207 SqlConnection Connection = new SqlConnection(SqlHelper.GetConnSting());208 return Connection;209 }210 #endregion211 212 #region ExecuteNonQuery命令213 214 /// 215 /// 执行指定连接字符串,类型的SqlCommand.216 ///217 ///
218 /// 示例:219 /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders");220 /// 主要用在insert,update,delete221 ///
222 /// 一个有效的数据库连接字符串223 /// 命令类型 (存储过程,命令文本, 其它.)224 /// 存储过程名称或SQL语句225 ///
返回命令影响的行数
226 public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText)227 {228 return ExecuteNonQuery(connectionString, commandType, commandText, (SqlParameter[])null);229 }230 231 /// 232 /// 执行指定连接字符串,类型的SqlCommand.如果没有提供参数,不返回结果.233 ///234 ///
235 /// 示例:236 /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));237 ///
238 /// 一个有效的数据库连接字符串239 /// 命令类型 (存储过程,命令文本, 其它.)240 /// 存储过程名称或SQL语句241 /// SqlParameter参数数组242 ///
返回命令影响的行数
243 public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)244 {245 if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString");246 247 using (SqlConnection connection = new SqlConnection(connectionString))248 {249 connection.Open();250 251 return ExecuteNonQuery(connection, commandType, commandText, commandParameters);252 }253 }254 255 /// 256 /// 执行指定连接字符串的存储过程,将对象数组的值赋给存储过程参数,257 /// 此方法需要在参数缓存方法中探索参数并生成参数.258 ///259 ///
260 /// 这个方法没有提供访问输出参数和返回值.261 /// 示例:262 /// int result = ExecuteNonQuery(connString, "PublishOrders", 24, 36);263 ///
264 /// 一个有效的数据库连接字符串/param>265 /// 存储过程名称266 /// 分配到存储过程输入参数的对象数组267 ///
返回受影响的行数
268 public static int ExecuteNonQuery(string connectionString, string spName, params object[] parameterValues)269 {270 if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString");271 if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName");272 273 // 如果存在参数值274 if ((parameterValues != null) && (parameterValues.Length > 0))275 {276 // 从探索存储过程参数(加载到缓存)并分配给存储过程参数数组.277 SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spName);278 279 // 给存储过程参数赋值280 AssignParameterValues(commandParameters, parameterValues);281 282 return ExecuteNonQuery(connectionString, CommandType.StoredProcedure, spName, commandParameters);283 }284 else285 {286 // 没有参数情况下287 return ExecuteNonQuery(connectionString, CommandType.StoredProcedure, spName);288 }289 }290 291 /// 292 /// 执行指定数据库连接对象的命令293 ///294 ///
295 /// 示例:296 /// int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders");297 ///
298 /// 一个有效的数据库连接对象299 /// 命令类型(存储过程,命令文本或其它.)300 /// 存储过程名称或T-SQL语句301 ///
返回影响的行数
302 public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType, string commandText)303 {304 return ExecuteNonQuery(connection, commandType, commandText, (SqlParameter[])null);305 }306 307 /// 308 /// 执行指定数据库连接对象的命令309 ///310 ///
311 /// 示例:312 /// int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));313 ///
314 /// 一个有效的数据库连接对象315 /// 命令类型(存储过程,命令文本或其它.)316 /// T存储过程名称或T-SQL语句317 /// SqlParamter参数数组318 ///
返回影响的行数
319 public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType, string commandText, params SqlParameter[] commandParameters)320 {321 if (connection == null) throw new ArgumentNullException("connection");322 323 // 创建SqlCommand命令,并进行预处理324 SqlCommand cmd = new SqlCommand();325 bool mustCloseConnection = false;326 PrepareCommand(cmd, connection, (SqlTransaction)null, commandType, commandText, commandParameters, out mustCloseConnection);327 328 // Finally, execute the command329 int retval = cmd.ExecuteNonQuery();330 331 // 清除参数,以便再次使用.332 cmd.Parameters.Clear();333 if (mustCloseConnection)334 connection.Close();335 return retval;336 }337 338 /// 339 /// 执行指定数据库连接对象的命令,将对象数组的值赋给存储过程参数.340 ///341 ///
342 /// 此方法不提供访问存储过程输出参数和返回值343 /// 示例:344 /// int result = ExecuteNonQuery(conn, "PublishOrders", 24, 36);345 ///
346 /// 一个有效的数据库连接对象347 /// 存储过程名348 /// 分配给存储过程输入参数的对象数组349 ///
返回影响的行数
350 public static int ExecuteNonQuery(SqlConnection connection, string spName, params object[] parameterValues)351 {352 if (connection == null) throw new ArgumentNullException("connection");353 if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName");354 355 // 如果有参数值356 if ((parameterValues != null) && (parameterValues.Length > 0))357 {358 // 从缓存中加载存储过程参数359 SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connection, spName);360 361 // 给存储过程分配参数值362 AssignParameterValues(commandParameters, parameterValues);363 364 return ExecuteNonQuery(connection, CommandType.StoredProcedure, spName, commandParameters);365 }366 else367 {368 return ExecuteNonQuery(connection, CommandType.StoredProcedure, spName);369 }370 }371 372 /// 373 /// 执行带事务的SqlCommand.374 ///375 ///
376 /// 示例.:377 /// int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "PublishOrders");378 ///
379 /// 一个有效的数据库连接对象380 /// 命令类型(存储过程,命令文本或其它.)381 /// 存储过程名称或T-SQL语句382 ///
返回影响的行数/returns>383 public static int ExecuteNonQuery(SqlTransaction transaction, CommandType commandType, string commandText)384 {385 return ExecuteNonQuery(transaction, commandType, commandText, (SqlParameter[])null);386 }387 388 ///
389 /// 执行带事务的SqlCommand(指定参数).390 ///391 ///
392 /// 示例:393 /// int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24));394 ///
395 ///
一个有效的数据库连接对象396 ///
命令类型(存储过程,命令文本或其它.)397 ///
存储过程名称或T-SQL语句398 ///
SqlParamter参数数组399 ///
返回影响的行数
400 public static int ExecuteNonQuery(SqlTransaction transaction, CommandType commandType, string commandText, params SqlParameter[] commandParameters)401 {402 if (transaction == null) throw new ArgumentNullException("transaction");403 if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction");404 405 // 预处理406 SqlCommand cmd = new SqlCommand();407 bool mustCloseConnection = false;408 PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters, out mustCloseConnection);409 410 // 执行411 int retval = cmd.ExecuteNonQuery();412 413 // 清除参数集,以便再次使用.414 cmd.Parameters.Clear();415 return retval;416 }417 418 ///
419 /// 执行带事务的SqlCommand(指定参数值).420 ///421 ///
422 /// 此方法不提供访问存储过程输出参数和返回值423 /// 示例:424 /// int result = ExecuteNonQuery(conn, trans, "PublishOrders", 24, 36);425 ///
426 ///
一个有效的数据库连接对象427 ///
存储过程名428 ///
分配给存储过程输入参数的对象数组429 ///
返回受影响的行数
430 public static int ExecuteNonQuery(SqlTransaction transaction, string spName, params object[] parameterValues)431 {432 if (transaction == null) throw new ArgumentNullException("transaction");433 if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction");434 if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName");435 436 // 如果有参数值437 if ((parameterValues != null) && (parameterValues.Length > 0))438 {439 // 从缓存中加载存储过程参数,如果缓存中不存在则从数据库中检索参数信息并加载到缓存中. ()440 SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spName);441 442 // 给存储过程参数赋值443 AssignParameterValues(commandParameters, parameterValues);444 445 // 调用重载方法446 return ExecuteNonQuery(transaction, CommandType.StoredProcedure, spName, commandParameters);447 }448 else449 {450 // 没有参数值451 return ExecuteNonQuery(transaction, CommandType.StoredProcedure, spName);452 }453 }454 455 #endregion ExecuteNonQuery方法结束456 457 #region ExecuteDataset方法458 459 ///
460 /// 执行指定数据库连接字符串的命令,返回DataSet.461 ///462 ///
463 /// 示例:464 /// DataSet ds = ExecuteDataset(connString, CommandType.StoredProcedure, "GetOrders");465 ///
466 ///
一个有效的数据库连接字符串467 ///
命令类型 (存储过程,命令文本或其它)468 ///
存储过程名称或T-SQL语句469 ///
返回一个包含结果集的DataSet
470 public static DataSet ExecuteDataset(string connectionString, CommandType commandType, string commandText)471 {472 return ExecuteDataset(connectionString, commandType, commandText, (SqlParameter[])null);473 }474 475 ///
476 /// 执行指定数据库连接字符串的命令,返回DataSet.477 ///478 ///
479 /// 示例:480 /// DataSet ds = ExecuteDataset(connString, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24));481 ///
482 ///
一个有效的数据库连接字符串483 ///
命令类型 (存储过程,命令文本或其它)484 ///
存储过程名称或T-SQL语句485 ///
SqlParamters参数数组486 ///
返回一个包含结果集的DataSet
487 public static DataSet ExecuteDataset(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)488 {489 if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString");490 491 // 创建并打开数据库连接对象,操作完成释放对象.492 using (SqlConnection connection = new SqlConnection(connectionString))493 {494 connection.Open();495 496 // 调用指定数据库连接字符串重载方法.497 return ExecuteDataset(connection, commandType, commandText, commandParameters);498 }499 }500 501 ///
502 /// 执行指定数据库连接字符串的命令,直接提供参数值,返回DataSet.503 ///504 ///
505 /// 此方法不提供访问存储过程输出参数和返回值.506 /// 示例:507 /// DataSet ds = ExecuteDataset(connString, "GetOrders", 24, 36);508 ///
509 ///
一个有效的数据库连接字符串510 ///
存储过程名511 ///
分配给存储过程输入参数的对象数组512 ///
返回一个包含结果集的DataSet
513 public static DataSet ExecuteDataset(string connectionString, string spName, params object[] parameterValues)514 {515 if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString");516 if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName");517 518 if ((parameterValues != null) && (parameterValues.Length > 0))519 {520 // 从缓存中检索存储过程参数521 SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spName);522 523 // 给存储过程参数分配值524 AssignParameterValues(commandParameters, parameterValues);525 526 return ExecuteDataset(connectionString, CommandType.StoredProcedure, spName, commandParameters);527 }528 else529 {530 return ExecuteDataset(connectionString, CommandType.StoredProcedure, spName);531 }532 }533 534 ///
535 /// 执行指定数据库连接对象的命令,返回DataSet.536 ///537 ///
538 /// 示例:539 /// DataSet ds = ExecuteDataset(conn, CommandType.StoredProcedure, "GetOrders");540 ///
541 ///
一个有效的数据库连接对象542 ///
命令类型 (存储过程,命令文本或其它)543 ///
存储过程名或T-SQL语句544 ///
返回一个包含结果集的DataSet
545 public static DataSet ExecuteDataset(SqlConnection connection, CommandType commandType, string commandText)546 {547 return ExecuteDataset(connection, commandType, commandText, (SqlParameter[])null);548 }549 550 ///
551 /// 执行指定数据库连接对象的命令,指定存储过程参数,返回DataSet.552 ///553 ///
554 /// 示例:555 /// DataSet ds = ExecuteDataset(conn, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24));556 ///
557 ///
一个有效的数据库连接对象558 ///
命令类型 (存储过程,命令文本或其它)559 ///
存储过程名或T-SQL语句560 ///
SqlParamter参数数组561 ///
返回一个包含结果集的DataSet
562 public static DataSet ExecuteDataset(SqlConnection connection, CommandType commandType, string commandText, params SqlParameter[] commandParameters)563 {564 if (connection == null) throw new ArgumentNullException("connection");565 566 // 预处理567 SqlCommand cmd = new SqlCommand();568 bool mustCloseConnection = false;569 PrepareCommand(cmd, connection, (SqlTransaction)null, commandType, commandText, commandParameters, out mustCloseConnection);570 571 // 创建SqlDataAdapter和DataSet.572 using (SqlDataAdapter da = new SqlDataAdapter(cmd))573 {574 DataSet ds = new DataSet();575 576 // 填充DataSet.577 da.Fill(ds);578 579 cmd.Parameters.Clear();580 581 if (mustCloseConnection)582 connection.Close();583 584 return ds;585 }586 }587 588 ///
589 /// 执行指定数据库连接对象的命令,指定参数值,返回DataSet.590 ///591 ///
592 /// 此方法不提供访问存储过程输入参数和返回值.593 /// 示例.:594 /// DataSet ds = ExecuteDataset(conn, "GetOrders", 24, 36);595 ///
596 ///
一个有效的数据库连接对象597 ///
存储过程名598 ///
分配给存储过程输入参数的对象数组599 ///
返回一个包含结果集的DataSet
600 public static DataSet ExecuteDataset(SqlConnection connection, string spName, params object[] parameterValues)601 {602 if (connection == null) throw new ArgumentNullException("connection");603 if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName");604 605 if ((parameterValues != null) && (parameterValues.Length > 0))606 {607 // 比缓存中加载存储过程参数608 SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connection, spName);609 610 // 给存储过程参数分配值611 AssignParameterValues(commandParameters, parameterValues);612 613 return ExecuteDataset(connection, CommandType.StoredProcedure, spName, commandParameters);614 }615 else616 {617 return ExecuteDataset(connection, CommandType.StoredProcedure, spName);618 }619 }620 621 ///
622 /// 执行指定事务的命令,返回DataSet.623 ///624 ///
625 /// 示例:626 /// DataSet ds = ExecuteDataset(trans, CommandType.StoredProcedure, "GetOrders");627 ///
628 ///
事务629 ///
命令类型 (存储过程,命令文本或其它)630 ///
存储过程名或T-SQL语句631 ///
返回一个包含结果集的DataSet
632 public static DataSet ExecuteDataset(SqlTransaction transaction, CommandType commandType, string commandText)633 {634 return ExecuteDataset(transaction, commandType, commandText, (SqlParameter[])null);635 }636 637 ///
638 /// 执行指定事务的命令,指定参数,返回DataSet.639 ///640 ///
641 /// 示例:642 /// DataSet ds = ExecuteDataset(trans, CommandType.StoredProcedure, "GetOrders", new SqlParameter("@prodid", 24));643 ///
644 ///
事务645 ///
命令类型 (存储过程,命令文本或其它)646 ///
存储过程名或T-SQL语句647 ///
SqlParamter参数数组648 ///
返回一个包含结果集的DataSet
649 public static DataSet ExecuteDataset(SqlTransaction transaction, CommandType commandType, string commandText, params SqlParameter[] commandParameters)650 {651 if (transaction == null) throw new ArgumentNullException("transaction");652 if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction");653 654 // 预处理655 SqlCommand cmd = new SqlCommand();656 bool mustCloseConnection = false;657 PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters, out mustCloseConnection);658 659 // 创建 DataAdapter & DataSet660 using (SqlDataAdapter da = new SqlDataAdapter(cmd))661 {662 DataSet ds = new DataSet();663 da.Fill(ds);664 cmd.Parameters.Clear();665 return ds;666 }667 }668 669 ///
670 /// 执行指定事务的命令,指定参数值,返回DataSet.671 ///672 ///
673 /// 此方法不提供访问存储过程输入参数和返回值.674 /// 示例.:675 /// DataSet ds = ExecuteDataset(trans, "GetOrders", 24, 36);676 ///
677 ///
事务678 ///
存储过程名679 ///
分配给存储过程输入参数的对象数组680 ///
返回一个包含结果集的DataSet
681 public static DataSet ExecuteDataset(SqlTransaction transaction, string spName, params object[] parameterValues)682 {683 if (transaction == null) throw new ArgumentNullException("transaction");684 if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction");685 if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName");686 687 if ((parameterValues != null) && (parameterValues.Length > 0))688 {689 // 从缓存中加载存储过程参数690 SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(transaction.Connection, spName);691 692 // 给存储过程参数分配值693 AssignParameterValues(commandParameters, parameterValues);694 695 return ExecuteDataset(transaction, CommandType.StoredProcedure, spName, commandParameters);696 }697 else698 {699 return ExecuteDataset(transaction, CommandType.StoredProcedure, spName);700 }701 }702 703 #endregion ExecuteDataset数据集命令结束704 705 #region ExecuteReader 数据阅读器706 707 ///
708 /// 枚举,标识数据库连接是由SqlHelper提供还是由调用者提供709 ///710 private enum SqlConnectionOwnership711 {712 ///
由SqlHelper提供连接713 Internal,714 ///
由调用者提供连接715 External716 }717 718 ///
719 /// 执行指定数据库连接对象的数据阅读器.720 ///721 ///
722 /// 如果是SqlHelper打开连接,当连接关闭DataReader也将关闭.723 /// 如果是调用都打开连接,DataReader由调用都管理.724 ///
725 ///
一个有效的数据库连接对象726 ///
一个有效的事务,或者为 'null'727 ///
命令类型 (存储过程,命令文本或其它)728 ///
存储过程名或T-SQL语句729 ///
SqlParameters参数数组,如果没有参数则为'null'730 ///
标识数据库连接对象是由调用者提供还是由SqlHelper提供731 ///
返回包含结果集的SqlDataReader
732 private static SqlDataReader ExecuteReader(SqlConnection connection, SqlTransaction transaction, CommandType commandType, string commandText, SqlParameter[] commandParameters, SqlConnectionOwnership connectionOwnership)733 {734 if (connection == null) throw new ArgumentNullException("connection");735 736 bool mustCloseConnection = false;737 // 创建命令738 SqlCommand cmd = new SqlCommand();739 try740 {741 PrepareCommand(cmd, connection, transaction, commandType, commandText, commandParameters, out mustCloseConnection);742 743 // 创建数据阅读器744 SqlDataReader dataReader;745 746 if (connectionOwnership == SqlConnectionOwnership.External)747 {748 dataReader = cmd.ExecuteReader();749 }750 else751 {752 dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);753 }754 755 // 清除参数,以便再次使用..756 // HACK: There is a problem here, the output parameter values are fletched757 // when the reader is closed, so if the parameters are detached from the command758 // then the SqlReader can磘 set its values.759 // When this happen, the parameters can磘 be used again in other command.760 bool canClear = true;761 foreach (SqlParameter commandParameter in cmd.Parameters)762 {763 if (commandParameter.Direction != ParameterDirection.Input)764 canClear = false;765 }766 767 if (canClear)768 {
SQLHelper

2.HtmlHelper

 

3.ConfigHelper

 

4.StringHelper

 

5.RegexHelper

 

6.IpHelper

 

7.MailHelper

 

8.YZMHelper

 

9.SerializerHelper

1 using System;  2 using System.Collections.Generic;  3 using System.IO;  4 using System.Linq;  5 using System.Text;  6 using System.Web;  7   8 namespace Demo1  9 { 10     public static class SerialHelper 11     { 12         public static string ObjToXmlStr(Type type, object obj) 13         { 14             if (obj != null) 15             { 16                 type = type != null ? type : obj.GetType(); 17  18                 using (MemoryStream stream = new MemoryStream()) 19                 { 20                     System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(type); 21                     xmlSerializer.Serialize(stream, obj); 22  23                     using (StreamReader reader = new StreamReader(stream)) 24                     { 25                         stream.Position = 0; 26                         string str = reader.ReadToEnd(); 27                         return str; 28                     } 29                 } 30             } 31             else 32             { 33                 return null; 34             } 35         } 36         public static object XmlStrToObj(Type type, string xml) 37         { 38             byte[] buffer = Encoding.UTF8.GetBytes(xml); 39             using (MemoryStream stream = new MemoryStream(buffer)) 40             { 41                 using (StreamReader reader = new StreamReader(stream)) 42                 { 43                     System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(type); 44                     return serializer.Deserialize(reader); 45                 } 46             } 47         } 48     } 49 }
View Code

10.获取MD5

1 private static string GetMD5(string str)  2 {  3     MD5 md5 = MD5.Create();  4     byte[] buffer = Encoding.Default.GetBytes(str);  5     byte[] newBuffer = md5.ComputeHash(buffer);  6     string strNew = "";  7     //每一个字符单独转换成16进制字符串  8     for (int i = 0; i < newBuffer.Length; i++)  9     { 10         strNew += newBuffer[i].ToString("x2"); 11     } 12     return strNew; 13 } 14
View Code

转载于:https://www.cnblogs.com/kimisme/p/5281092.html

你可能感兴趣的文章
CentOS 7.3 实体机启动 U 盘制作
查看>>
mysql数据库
查看>>
dede调用文章里的图片
查看>>
windows 窗体基本控件
查看>>
unix date 命令获取某日期的前一天
查看>>
团队作业(二)
查看>>
[hdu 2604] Queuing 递推 矩阵快速幂
查看>>
c# js 删除table原行数据
查看>>
[LeetCode][JavaScript]Pow(x, n)
查看>>
通讯录设计ver1.0版本
查看>>
swift学习笔记
查看>>
AngularJs2
查看>>
教你使用runtime写一个简单的字典转模型的工具类
查看>>
Entity Framework 一
查看>>
MVC 基础
查看>>
WIN7建立网络映射磁盘
查看>>
解决 Cannot resolve class or package 'mysql'
查看>>
【流程管理】【PCB】PCB设计流程
查看>>
2433: [Noi2011]智能车比赛 - BZOJ
查看>>
less
查看>>