SqlConnectionExt.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using System;
  2. using System.Data;
  3. using System.Data.SqlClient;
  4. namespace Quadarax.Foundation.Core.Data.Extensions
  5. {
  6. public static class SqlConnectionExt
  7. {
  8. public static SqlDataReader Query(this SqlConnection owner, string query, params SqlParameter[] parameters)
  9. {
  10. if (owner == null)
  11. throw new ArgumentNullException(nameof(owner));
  12. if (string.IsNullOrEmpty(query))
  13. throw new ArgumentNullException(nameof(query));
  14. var command = owner.CreateCommand();
  15. command.CommandText = query;
  16. command.CommandType = CommandType.Text;
  17. if (parameters!=null)
  18. foreach (var par in parameters)
  19. command.Parameters.Add(par);
  20. return command.ExecuteReader(CommandBehavior.Default);
  21. }
  22. public static int Execute(this SqlConnection owner, string query, params SqlParameter[] parameters)
  23. {
  24. return Execute(owner, CommandType.Text, query, parameters);
  25. }
  26. public static int BatchExecute(this SqlConnection owner, string query, params SqlParameter[] parameters)
  27. {
  28. var result = 0;
  29. var sqlBatch = string.Empty;
  30. query += "\nGO"; // make sure last batch is executed.
  31. foreach (var line in query.Split(new string[] {"\n", "\r"}, StringSplitOptions.RemoveEmptyEntries))
  32. {
  33. if (line.ToUpperInvariant().Trim() == "GO")
  34. {
  35. if (string.IsNullOrEmpty(sqlBatch)) continue;
  36. result = Execute(owner, sqlBatch, parameters);
  37. sqlBatch = string.Empty;
  38. }
  39. else
  40. {
  41. sqlBatch += line + "\n";
  42. }
  43. }
  44. return result;
  45. }
  46. public static int ExecuteSp(this SqlConnection owner, string query, params SqlParameter[] parameters)
  47. {
  48. return Execute(owner, CommandType.StoredProcedure, query, parameters);
  49. }
  50. public static TResult ExecuteScalar<TResult>(this SqlConnection owner,CommandType type, string query, params SqlParameter[] parameters)
  51. {
  52. if (owner == null)
  53. throw new ArgumentNullException(nameof(owner));
  54. if (string.IsNullOrEmpty(query))
  55. throw new ArgumentNullException(nameof(query));
  56. var command = owner.CreateCommand();
  57. command.CommandText = query;
  58. command.CommandType = type;
  59. if (parameters!=null)
  60. foreach (var par in parameters)
  61. command.Parameters.Add(par);
  62. return (TResult)command.ExecuteScalar();
  63. }
  64. public static int Execute(this SqlConnection owner,CommandType type, string query, params SqlParameter[] parameters)
  65. {
  66. if (owner == null)
  67. throw new ArgumentNullException(nameof(owner));
  68. if (string.IsNullOrEmpty(query))
  69. throw new ArgumentNullException(nameof(query));
  70. var command = owner.CreateCommand();
  71. command.CommandText = query;
  72. command.CommandType = type;
  73. if (parameters!=null)
  74. foreach (var par in parameters)
  75. command.Parameters.Add(par);
  76. return command.ExecuteNonQuery();
  77. }
  78. }
  79. }