using System; using System.Data.SQLite; using System.IO; namespace HMI.Simple.Util { public class SerialDataHelper { private static string createTableSql = @"CREATE TABLE IF NOT EXISTS serialData ( id INTEGER PRIMARY KEY AUTOINCREMENT, sn TEXT NOT NULL, station TEXT NOT NULL, step TEXT NOT NULL, status TEXT NOT NULL, time TIME NOT NULL);"; private static string GetConnectionStr(string dbFile) { return $"DataSource={dbFile};Version=3;Pooling=False;Max Pool Size=100"; } private static void CreateDbFile(string dbFile) { if (!File.Exists(dbFile)) { string dir = Path.GetDirectoryName(dbFile); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } SQLiteConnection.CreateFile(dbFile); using (SQLiteConnection conn = new SQLiteConnection()) using (SQLiteCommand cmd = new SQLiteCommand(conn)) { conn.ConnectionString = GetConnectionStr(dbFile); conn.Open(); cmd.CommandText = createTableSql; cmd.ExecuteNonQuery(); } } } public static bool InsertSerialData(string dbFile, string sn, string station, string step, string status, out string errMsg) { errMsg = string.Empty; try { if (!File.Exists(dbFile)) { CreateDbFile(dbFile); } using (SQLiteConnection conn = new SQLiteConnection()) using (SQLiteCommand cmd = new SQLiteCommand(conn)) { conn.ConnectionString = GetConnectionStr(dbFile); conn.Open(); cmd.CommandText = $@"INSERT INTO serialData (sn, station, step, status, time) VALUES ('{sn}', '{station}', '{step}', '{status}', '{DateTime.Now:yyyy-MM-dd HH:mm.ss}');"; if (cmd.ExecuteNonQuery() > 0) { return true; } errMsg = "插入失败"; return false; } } catch (Exception ex) { errMsg = ex.Message; return false; } } public static bool UpdateStatusBySn(string dbFile, string sn, string status, out string errMsg) { errMsg = string.Empty; try { if (!File.Exists(dbFile)) { errMsg = "数据库文件不存在"; return false; } using (SQLiteConnection conn = new SQLiteConnection()) using (SQLiteCommand cmd = new SQLiteCommand(conn)) { conn.ConnectionString = GetConnectionStr(dbFile); conn.Open(); cmd.CommandText = $@"UPDATE serialData SET status='{status}', time='{DateTime.Now:yyyy-MM-dd HH:mm.ss}' WHERE sn='{sn}';"; if (cmd.ExecuteNonQuery() > 0) { return true; } errMsg = "更新失败"; return false; } } catch (Exception ex) { errMsg = ex.Message; return false; } } } }