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;
|
}
|
}
|
}
|
}
|