ErrorMesSqliteDataClass.cs 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. using CCDCount.MODEL.SqlDataModel;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data.SQLite;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace CCDCount.DLL.SqlDataClass
  10. {
  11. public class ErrorMesSqliteDataClass
  12. {
  13. private readonly string _dbPath;
  14. private object locker = new object();
  15. public ErrorMesSqliteDataClass(string dbPath)
  16. {
  17. _dbPath = dbPath;
  18. // 1. 获取文件夹路径
  19. string directoryPath = Path.GetDirectoryName(dbPath);
  20. // 2. 检查文件夹是否存在
  21. if (!Directory.Exists(directoryPath))
  22. {
  23. // 创建文件夹
  24. Directory.CreateDirectory(directoryPath);
  25. }
  26. InitializeDatabase();
  27. }
  28. // 初始化数据库和表
  29. private void InitializeDatabase()
  30. {
  31. if (!File.Exists(_dbPath))
  32. {
  33. SQLiteConnection.CreateFile(_dbPath);
  34. }
  35. using (var conn = new SQLiteConnection($"Data Source={_dbPath};Version=3;"))
  36. {
  37. conn.Open();
  38. string createTableSql = @"
  39. CREATE TABLE IF NOT EXISTS ErrMessage (
  40. Id INTEGER PRIMARY KEY AUTOINCREMENT,
  41. Number INTEGER NOT NULL,
  42. Category TEXT NOT NULL,
  43. MessageType TEXT NOT NULL,
  44. Message TEXT NOT NULL,
  45. Path TEXT ,
  46. DateTime TEXT NOT NULL,
  47. UserID INTEGER NOT NULL
  48. )";
  49. new SQLiteCommand(createTableSql, conn).ExecuteNonQuery();
  50. }
  51. }
  52. // 插入数据
  53. public void InsertErrMessage(ErroeMesDataModelClass Message)
  54. {
  55. lock (locker)
  56. {
  57. using (var conn = new SQLiteConnection($"Data Source={_dbPath};Version=3;"))
  58. {
  59. conn.Open();
  60. string sql = "INSERT INTO ErrMessage (Number, Category, MessageType,Message,Path,DateTime,UserID) VALUES (@Number, @Category, @MessageType,@Message,@Path,@DateTime, @UserID)";
  61. var cmd = new SQLiteCommand(sql, conn);
  62. cmd.Parameters.AddWithValue("@Number", Message.Number);
  63. cmd.Parameters.AddWithValue("@Category", Message.Category);
  64. cmd.Parameters.AddWithValue("@MessageType", Message.MessageType);
  65. cmd.Parameters.AddWithValue("@Message", Message.Message);
  66. cmd.Parameters.AddWithValue("@Path", Message.Path);
  67. cmd.Parameters.AddWithValue("@DateTime", Message.DateTime.ToString("yyyy-MM-dd HH:mm:ss.fff")); // 格式化为字符串
  68. cmd.Parameters.AddWithValue("@UserID", Message.UserID);
  69. cmd.ExecuteNonQuery();
  70. }
  71. }
  72. }
  73. // 查询所有数据
  74. public List<ErroeMesDataModelClass> GetAllErrMessage()
  75. {
  76. var persons = new List<ErroeMesDataModelClass>();
  77. using (var conn = new SQLiteConnection($"Data Source={_dbPath};Version=3;"))
  78. {
  79. conn.Open();
  80. string sql = "SELECT * FROM ErrMessage ORDER BY DateTime DESC LIMIT 1000";
  81. var cmd = new SQLiteCommand(sql, conn);
  82. using (SQLiteDataReader reader = cmd.ExecuteReader())
  83. {
  84. while (reader.Read())
  85. {
  86. persons.Add(new ErroeMesDataModelClass
  87. {
  88. Number = Convert.ToInt32(reader["Number"]),
  89. Category = reader["Category"].ToString(),
  90. MessageType = reader["MessageType"].ToString(),
  91. Message = reader["Message"].ToString(),
  92. Path = reader["Path"].ToString(),
  93. UserID = Convert.ToInt32(reader["UserID"]),
  94. // 解析时间字符串
  95. DateTime = DateTime.Parse(reader["DateTime"].ToString())
  96. });
  97. }
  98. }
  99. }
  100. return persons;
  101. }
  102. /// <summary>
  103. /// 获取值改变信息
  104. /// </summary>
  105. /// <returns></returns>
  106. public List<ErroeMesDataModelClass> GetValueChangeMessage()
  107. {
  108. var persons = new List<ErroeMesDataModelClass>();
  109. using (var conn = new SQLiteConnection($"Data Source={_dbPath};Version=3;"))
  110. {
  111. conn.Open();
  112. string sql = "SELECT * FROM ErrMessage WHERE MessageType = 'value change'";
  113. var cmd = new SQLiteCommand(sql, conn);
  114. using (SQLiteDataReader reader = cmd.ExecuteReader())
  115. {
  116. while (reader.Read())
  117. {
  118. persons.Add(new ErroeMesDataModelClass
  119. {
  120. Number = Convert.ToInt32(reader["Number"]),
  121. Category = reader["Category"].ToString(),
  122. MessageType = reader["MessageType"].ToString(),
  123. Message = reader["Message"].ToString(),
  124. Path = reader["Path"].ToString(),
  125. UserID = Convert.ToInt32(reader["UserID"]),
  126. // 解析时间字符串
  127. DateTime = DateTime.Parse(reader["DateTime"].ToString())
  128. });
  129. }
  130. }
  131. }
  132. return persons;
  133. }
  134. /// <summary>
  135. /// 获取值改变信息
  136. /// </summary>
  137. /// <param name="UserID">操作员ID</param>
  138. /// <returns></returns>
  139. public List<ErroeMesDataModelClass> GetValueChangeMessage(int UserID)
  140. {
  141. var persons = new List<ErroeMesDataModelClass>();
  142. using (var conn = new SQLiteConnection($"Data Source={_dbPath};Version=3;"))
  143. {
  144. conn.Open();
  145. string sql = "SELECT * FROM ErrMessage WHERE MessageType = @MessageType AND UserID = @UserID";
  146. var cmd = new SQLiteCommand(sql, conn);
  147. cmd.Parameters.AddWithValue("@MessageType", "value change");
  148. cmd.Parameters.AddWithValue("@UserID", UserID);
  149. using (SQLiteDataReader reader = cmd.ExecuteReader())
  150. {
  151. while (reader.Read())
  152. {
  153. persons.Add(new ErroeMesDataModelClass
  154. {
  155. Number = Convert.ToInt32(reader["Number"]),
  156. Category = reader["Category"].ToString(),
  157. MessageType = reader["MessageType"].ToString(),
  158. Message = reader["Message"].ToString(),
  159. Path = reader["Path"].ToString(),
  160. UserID = Convert.ToInt32(reader["UserID"]),
  161. // 解析时间字符串
  162. DateTime = DateTime.Parse(reader["DateTime"].ToString())
  163. });
  164. }
  165. }
  166. }
  167. return persons;
  168. }
  169. /// <summary>
  170. /// 获取异常信息
  171. /// </summary>
  172. /// <returns></returns>
  173. public List<ErroeMesDataModelClass> GetErrorMessage()
  174. {
  175. var persons = new List<ErroeMesDataModelClass>();
  176. using (var conn = new SQLiteConnection($"Data Source={_dbPath};Version=3;"))
  177. {
  178. conn.Open();
  179. string sql = "SELECT * FROM ErrMessage WHERE MessageType = @MessageType";
  180. var cmd = new SQLiteCommand(sql, conn);
  181. cmd.Parameters.AddWithValue("@MessageType", "Exceptional");
  182. using (SQLiteDataReader reader = cmd.ExecuteReader())
  183. {
  184. while (reader.Read())
  185. {
  186. persons.Add(new ErroeMesDataModelClass
  187. {
  188. Number = Convert.ToInt32(reader["Number"]),
  189. Category = reader["Category"].ToString(),
  190. MessageType = reader["MessageType"].ToString(),
  191. Message = reader["Message"].ToString(),
  192. Path = reader["Path"].ToString(),
  193. UserID = Convert.ToInt32(reader["UserID"]),
  194. // 解析时间字符串
  195. DateTime = DateTime.Parse(reader["DateTime"].ToString())
  196. });
  197. }
  198. }
  199. }
  200. return persons;
  201. }
  202. }
  203. }