HP_SQLHelper.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace HPSocketCS.Extended
  6. {
  7. /// <summary>
  8. /// SQL指令请求处理类
  9. /// </summary>
  10. public class HP_SQLHelper
  11. {
  12. public HP_SQLHelper() {
  13. }
  14. public static SerSqlParameter[] ToSerSqlParameter(params System.Data.SqlClient.SqlParameter[] cmdParms)
  15. {
  16. return IDataParameterToSerSqlParameter(cmdParms);
  17. }
  18. public static SerSqlParameter[] IDataParameterToSerSqlParameter(params System.Data.IDataParameter[] cmdParms)
  19. {
  20. List<SerSqlParameter> serSqlParameterList = new List<SerSqlParameter>();
  21. if (cmdParms != null)
  22. {
  23. foreach (System.Data.SqlClient.SqlParameter par in cmdParms)
  24. {
  25. serSqlParameterList.Add(new SerSqlParameter(par));
  26. }
  27. }
  28. return serSqlParameterList.ToArray();
  29. }
  30. /// <summary>
  31. /// 设置输出参数的值
  32. /// </summary>
  33. /// <param name="cmdParms">用户提交的参数集合</param>
  34. /// <param name="serSqlParameterList">执行后返回的参数集合</param>
  35. public static void SetOutputSqlParameter(System.Data.IDataParameter[] cmdParms, List<SerSqlParameter> serSqlParameterList)
  36. {
  37. foreach (SerSqlParameter spar in serSqlParameterList)
  38. {
  39. foreach (System.Data.SqlClient.SqlParameter par in cmdParms)
  40. {
  41. if (spar.ParaName.ToLower() == par.ParameterName.ToLower()) {
  42. par.Value = spar.ParaVal;
  43. break;
  44. }
  45. }
  46. }
  47. }
  48. static HPSocketCS.TcpPackClient hpClient;
  49. /// <summary>
  50. /// 网络对象
  51. /// </summary>
  52. [Obsolete("此属性只用于“Helper_SQLHelper”类,做数SQL数据传输,请不要在其它地方使用", false)]
  53. public static HPSocketCS.TcpPackClient HpClient
  54. {
  55. get { return hpClient; }
  56. set { hpClient = value; }
  57. }
  58. /// <summary>
  59. /// 发送SQL数据库请求命令到服务器并返回请求结果
  60. /// </summary>
  61. /// <param name="requestData">请求的SQL命令数据类</param>
  62. /// <param name="millisecondsTimeout"></param>
  63. /// <returns></returns>
  64. [Obsolete("此方法只用于“Helper_SQLHelper”类,做数SQL数据传输,请不要在其它地方使用", false)]
  65. public static HPSocketCS.Extended.SQLHelperReturnData HP_SendSqlCommandToServer(HPSocketCS.Extended.SQLHelperRequestData requestData, int millisecondsTimeout = 1000*90)
  66. {
  67. return HP_SQLHelper.HP_SendSqlCommandToServer(HP_SQLHelper.HpClient,requestData, millisecondsTimeout);
  68. }
  69. /// <summary>
  70. /// 发送SQL数据库请求命令到服务器并返回请求结果
  71. /// </summary>
  72. /// <param name="requestData">请求的SQL命令数据类</param>
  73. /// <param name="millisecondsTimeout"></param>
  74. /// <returns></returns>
  75. public static HPSocketCS.Extended.SQLHelperReturnData HP_SendSqlCommandToServer(HPSocketCS.TcpPackClient _Client,HPSocketCS.Extended.SQLHelperRequestData requestData, int millisecondsTimeout = 1000*90)
  76. {
  77. HPSocketCS.Extended.SQLHelperReturnData retData = null;
  78. if (_Client.State == ServiceState.Stoped || _Client.State == ServiceState.Stoping)
  79. {
  80. _Client.Connetion();
  81. System.Threading.Thread.Sleep(1000);
  82. }
  83. if (_Client.State == ServiceState.Started)
  84. {
  85. try
  86. {
  87. byte[] tempSendBuffer = HPSocketCS.Extended.DataSetSerializerDeserialize.ObjectSerializerCompressionRetBytes(requestData);
  88. using (System.IO.MemoryStream retMstream = _Client.AutoUnpackingSendAndReturnResult(tempSendBuffer, HPSocketCS.Extended.DataType.SQLHelper, HPSocketCS.Extended.TransferRequestCommand.SQLHelperData, millisecondsTimeout))
  89. {
  90. if (retMstream != null && retMstream.Length > 0)
  91. {
  92. retData = (HPSocketCS.Extended.SQLHelperReturnData)HPSocketCS.Extended.DataSetSerializerDeserialize.ObjectDeserializeDecompress(retMstream.GetBuffer());
  93. retData.DataSize = retMstream.Length;
  94. }
  95. if (retMstream != null)
  96. {
  97. retMstream.Close();
  98. }
  99. }
  100. }
  101. catch (Exception ex)
  102. {
  103. retData = new HPSocketCS.Extended.SQLHelperReturnData("SQL请求处理出错:" + ex.Message);
  104. }
  105. }
  106. else
  107. {
  108. return new SQLHelperReturnData("SQL指令时失败,未连接到服器或网络连接已断开,请检查网络环境。");
  109. }
  110. return retData;
  111. }
  112. }
  113. }