PublicTableHelper.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using MySystem.Models;
  2. using System;
  3. using System.Data;
  4. using Library;
  5. namespace MySystem
  6. {
  7. public class PublicTableHelper
  8. {
  9. public readonly static PublicTableHelper Instance = new PublicTableHelper();
  10. private PublicTableHelper()
  11. { }
  12. public string Start(string table)
  13. {
  14. bool op = true;
  15. OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
  16. string result = "success";
  17. int startId = 0; //RedisDbconn.Instance.Get<int>("Start" + table + "Id");
  18. // int total = 0;
  19. while (op)
  20. {
  21. try
  22. {
  23. DataTable dt = OtherMySqlConn.dtable("select * from " + table + " where Id>" + startId + " order by Id");
  24. if (dt.Rows.Count > 0)
  25. {
  26. foreach (DataRow dr in dt.Rows)
  27. {
  28. startId = int.Parse(function.CheckInt(dr["Id"].ToString()));
  29. string fields = "";
  30. string values = "";
  31. DataTable localTable = dbconn.dtable("select * from " + table + " where Id=" + startId);
  32. if (localTable.Rows.Count > 0)
  33. {
  34. foreach (DataColumn dc in localTable.Columns)
  35. {
  36. if (!string.IsNullOrEmpty(dr[dc.ColumnName].ToString()))
  37. {
  38. if (dc.DataType == typeof(int) || dc.DataType == typeof(decimal) || dc.DataType == typeof(ulong))
  39. {
  40. fields += dc.ColumnName + "=" + dr[dc.ColumnName].ToString() + ",";
  41. }
  42. else
  43. {
  44. string val = "";
  45. if (dc.DataType == typeof(DateTime))
  46. {
  47. val = DateTime.Parse(dr[dc.ColumnName].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
  48. }
  49. else
  50. {
  51. val = dr[dc.ColumnName].ToString();
  52. }
  53. fields += dc.ColumnName + "='" + val + "',";
  54. }
  55. }
  56. }
  57. fields = fields.TrimEnd(',');
  58. string sql = "update " + table + " set " + fields + " where Id=" + startId;
  59. dbconn.op(sql);
  60. }
  61. else
  62. {
  63. foreach (DataColumn dc in localTable.Columns)
  64. {
  65. if (!string.IsNullOrEmpty(dr[dc.ColumnName].ToString()))
  66. {
  67. fields += dc.ColumnName + ",";
  68. if (dc.DataType == typeof(int) || dc.DataType == typeof(decimal) || dc.DataType == typeof(ulong))
  69. {
  70. values += dr[dc.ColumnName].ToString() + ",";
  71. }
  72. else
  73. {
  74. string val = "";
  75. if (dc.DataType == typeof(DateTime))
  76. {
  77. val = DateTime.Parse(dr[dc.ColumnName].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
  78. }
  79. else
  80. {
  81. val = dr[dc.ColumnName].ToString();
  82. }
  83. values += "'" + val + "',";
  84. }
  85. }
  86. }
  87. fields = fields.TrimEnd(',');
  88. values = values.TrimEnd(',');
  89. string sql = "insert into " + table + " (" + fields + ") values (" + values + ")";
  90. dbconn.op(sql);
  91. }
  92. startId = int.Parse(function.CheckInt(dr["Id"].ToString()));
  93. }
  94. }
  95. else
  96. {
  97. op = false;
  98. RedisDbconn.Instance.Set("Start" + table + "Id", startId);
  99. }
  100. }
  101. catch (Exception ex)
  102. {
  103. ErrorMsg msg = new ErrorMsg();
  104. msg.Time = DateTime.Now;
  105. msg.ErrorContent = ex.ToString();
  106. RedisDbconn.Instance.AddList(table + ":Error", msg);
  107. }
  108. }
  109. // OtherMySqlConn.connstr = ;
  110. return result;
  111. }
  112. }
  113. }