添加添加数据库服务器表
修改扫码连接修复扫码闪退问题
This commit is contained in:
1 parent
6c0af56ea9
commit
0801e4875c
64 files changed
+3265
No files matched your search
@@ -0,0 +1,312 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace SunlightAggregationTerminal.Class
|
||||
{
|
||||
|
||||
public class SQLiteConfig()
|
||||
{
|
||||
|
||||
public static SqliteHelper SQLitedata = null!; //定义数据库
|
||||
|
||||
public static SqliteHelper? Config(string dat)
|
||||
{
|
||||
try
|
||||
{
|
||||
SQLitedata = new SqliteHelper(dat); //数据库连接路径(获取各平台的应用数据目录)
|
||||
SQLitedata.Open(); //打开数据库
|
||||
if (SQLitedata.TableExists("Users"))
|
||||
{
|
||||
CheckAndRepairTableSchema();
|
||||
}
|
||||
else
|
||||
{
|
||||
CreateFreshUserTable();
|
||||
}
|
||||
|
||||
if (SQLitedata.TableExists("Notification"))
|
||||
{
|
||||
CheckAndRepairTableSchemaNotification();
|
||||
}
|
||||
else
|
||||
{
|
||||
CreateFreshUserTableNotification();
|
||||
}
|
||||
|
||||
if (SQLitedata.TableExists("Server"))
|
||||
{
|
||||
CheckAndRepairTableSchemaSERVER();
|
||||
}
|
||||
else
|
||||
{
|
||||
CreateFreshUserTableSERVER();
|
||||
}
|
||||
|
||||
SQLitedata.Close();
|
||||
|
||||
return SQLitedata;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// --- 逻辑分支 表存在,检查字段完整性 ---
|
||||
private static void CheckAndRepairTableSchema()
|
||||
{
|
||||
// 获取现有字段列表
|
||||
// 使用 PRAGMA table_info 获取结构
|
||||
string pragmaSql = "PRAGMA table_info('Users');";
|
||||
|
||||
// 复用现有的 ExecuteReader 方法
|
||||
// ExecuteReader 返回 null 代表出错,否则返回 DataReader
|
||||
using (var reader = SQLitedata.ExecuteReader(pragmaSql, null))
|
||||
{
|
||||
if (reader == null) return;
|
||||
|
||||
var existingColumns = new List<string>();
|
||||
while (reader.Read())
|
||||
{
|
||||
// PRAGMA table_info 返回结果的第2列(Index=1)是列名
|
||||
string colName = reader.GetString(1);
|
||||
existingColumns.Add(colName);
|
||||
}
|
||||
reader.Close(); // 记得关闭 Reader
|
||||
|
||||
// 检查并添加缺失字段 (直接拼接 SQL)
|
||||
// 检查 User
|
||||
if (!existingColumns.Contains("User"))
|
||||
{
|
||||
string sql = "ALTER TABLE Users ADD COLUMN User TEXT NOT NULL;";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
// 检查 UserId
|
||||
if (!existingColumns.Contains("UserId"))
|
||||
{
|
||||
string sql = "ALTER TABLE Users ADD COLUMN UserId TEXT;";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
// 检查 UserName
|
||||
if (!existingColumns.Contains("UserName"))
|
||||
{
|
||||
string sql = "ALTER TABLE Users ADD COLUMN UserName TEXT;";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
// 检查 UserPassword
|
||||
if (!existingColumns.Contains("UserPassword"))
|
||||
{
|
||||
string sql = "ALTER TABLE Users ADD COLUMN UserPassword TEXT;";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
// 检查 Enterprise
|
||||
if (!existingColumns.Contains("Enterprise"))
|
||||
{
|
||||
string sql = "ALTER TABLE Users ADD COLUMN Enterprise TEXT;";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
// 检查 Department
|
||||
if (!existingColumns.Contains("Department"))
|
||||
{
|
||||
string sql = "ALTER TABLE Users ADD COLUMN Department TEXT;";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
// 检查 ServerID
|
||||
if (!existingColumns.Contains("ServerID"))
|
||||
{
|
||||
string sql = "ALTER TABLE Users ADD COLUMN ServerID TEXT;";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
// 检查 Group
|
||||
if (!existingColumns.Contains("Groups"))
|
||||
{
|
||||
string sql = "ALTER TABLE Users ADD COLUMN Groups TEXT;";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
// 检查 ProxyID
|
||||
if (!existingColumns.Contains("ProxyID"))
|
||||
{
|
||||
string sql = "ALTER TABLE Users ADD COLUMN ProxyID TEXT;";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
// 检查 LogNo
|
||||
if (!existingColumns.Contains("LogNo"))
|
||||
{
|
||||
string sql = "ALTER TABLE Users ADD COLUMN LogNo BOOL DEFAULT (0);";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
// 检查 LocalAreaNetworkMode
|
||||
if (!existingColumns.Contains("LocalAreaNetworkMode"))
|
||||
{
|
||||
string sql = "ALTER TABLE Users ADD COLUMN LocalAreaNetworkMode BOOL DEFAULT (0);";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
// 检查 LocalAreaNetworkMode
|
||||
if (!existingColumns.Contains("DarkMode"))
|
||||
{
|
||||
string sql = "ALTER TABLE Users ADD COLUMN DarkMode BOOL DEFAULT (0);";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
// 检查 LocalAreaNetworkMode
|
||||
if (!existingColumns.Contains("MessageNotificationMode"))
|
||||
{
|
||||
string sql = "ALTER TABLE Users ADD COLUMN MessageNotificationMode BOOL DEFAULT (0);";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
// 检查 GUID
|
||||
if (!existingColumns.Contains("GUID"))
|
||||
{
|
||||
string sql = "ALTER TABLE Users ADD COLUMN GUID TEXT;";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
string sqlupdata = "UPDATE Users SET GUID = '"+ Models.AppModels.GetAppUniqueId() + "';";
|
||||
SQLitedata.ExecuteNonQuery(sqlupdata, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
private static void CheckAndRepairTableSchemaNotification()
|
||||
{
|
||||
// 获取现有字段列表
|
||||
// 使用 PRAGMA table_info 获取结构
|
||||
string pragmaSql = "PRAGMA table_info('Notification');";
|
||||
|
||||
// 复用现有的 ExecuteReader 方法
|
||||
// ExecuteReader 返回 null 代表出错,否则返回 DataReader
|
||||
using (var reader = SQLitedata.ExecuteReader(pragmaSql, null))
|
||||
{
|
||||
if (reader == null) return;
|
||||
|
||||
var existingColumns = new List<string>();
|
||||
while (reader.Read())
|
||||
{
|
||||
// PRAGMA table_info 返回结果的第2列(Index=1)是列名
|
||||
string colName = reader.GetString(1);
|
||||
existingColumns.Add(colName);
|
||||
}
|
||||
reader.Close(); // 记得关闭 Reader
|
||||
|
||||
// 检查并添加缺失字段 (直接拼接 SQL)
|
||||
// 检查 Title
|
||||
if (!existingColumns.Contains("Title"))
|
||||
{
|
||||
string sql = "ALTER TABLE Notification ADD COLUMN Title TEXT NULL;";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
// 检查 Content
|
||||
if (!existingColumns.Contains("Content"))
|
||||
{
|
||||
string sql = "ALTER TABLE Notification ADD COLUMN Content TEXT;";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
// 检查 Time
|
||||
if (!existingColumns.Contains("Time"))
|
||||
{
|
||||
string sql = "ALTER TABLE Notification ADD COLUMN Time TEXT;";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
// 检查 Type
|
||||
if (!existingColumns.Contains("Type"))
|
||||
{
|
||||
string sql = "ALTER TABLE Notification ADD COLUMN Type INT;";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
private static void CheckAndRepairTableSchemaSERVER()
|
||||
{
|
||||
// 获取现有字段列表
|
||||
// 使用 PRAGMA table_info 获取结构
|
||||
string pragmaSql = "PRAGMA table_info('Server');";
|
||||
|
||||
// 复用现有的 ExecuteReader 方法
|
||||
// ExecuteReader 返回 null 代表出错,否则返回 DataReader
|
||||
using (var reader = SQLitedata.ExecuteReader(pragmaSql, null))
|
||||
{
|
||||
if (reader == null) return;
|
||||
|
||||
var existingColumns = new List<string>();
|
||||
while (reader.Read())
|
||||
{
|
||||
// PRAGMA table_info 返回结果的第2列(Index=1)是列名
|
||||
string colName = reader.GetString(1);
|
||||
existingColumns.Add(colName);
|
||||
}
|
||||
reader.Close(); // 记得关闭 Reader
|
||||
|
||||
// 检查并添加缺失字段 (直接拼接 SQL)
|
||||
// 检查 Enterprise
|
||||
if (!existingColumns.Contains("Enterprise"))
|
||||
{
|
||||
string sql = "ALTER TABLE Server ADD COLUMN Enterprise TEXT NULL;";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
// 检查 ServerID
|
||||
if (!existingColumns.Contains("ServerID"))
|
||||
{
|
||||
string sql = "ALTER TABLE Server ADD COLUMN ServerID TEXT;";
|
||||
SQLitedata.ExecuteNonQuery(sql, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
// --- 逻辑分支 表不存在,直接创建 ---
|
||||
private static void CreateFreshUserTable()
|
||||
{
|
||||
// 建表语句
|
||||
string createSql = @"
|
||||
CREATE TABLE Users (
|
||||
User TEXT NOT NULL,
|
||||
UserId TEXT,
|
||||
UserName TEXT,
|
||||
UserPassword TEXT,
|
||||
Enterprise TEXT,
|
||||
Department TEXT,
|
||||
ServerID TEXT,
|
||||
Groups TEXT,
|
||||
ProxyID TEXT,
|
||||
LogNo BOOL DEFAULT (0),
|
||||
LocalAreaNetworkMode BOOL DEFAULT (0),
|
||||
DarkMode BOOL DEFAULT (0),
|
||||
MessageNotificationMode BOOL DEFAULT (0),
|
||||
GUID TEXT
|
||||
);";
|
||||
|
||||
// 复用现有的 ExecuteNonQuery 方法
|
||||
SQLitedata.ExecuteNonQuery(createSql, null);
|
||||
|
||||
string Sql = @"
|
||||
INSERT INTO Users (User,UserId ,UserName ,UserPassword ,Enterprise ,Department ,ServerID ,Groups ,ProxyID ,LogNo ,LocalAreaNetworkMode ,DarkMode ,MessageNotificationMode ,GUID
|
||||
)VALUES('SUNLIGHT','SUNLIGHT','SUNLIGHT','SUNLIGHT','SUNLIGHT','ENGINEER','TEST','ENGINEER','',0,0,0,0,'"+ Models.AppModels.GetAppUniqueId() + "');";
|
||||
|
||||
// 复用现有的 ExecuteNonQuery 方法
|
||||
SQLitedata.ExecuteNonQuery(Sql, null);
|
||||
}
|
||||
private static void CreateFreshUserTableNotification()
|
||||
{
|
||||
// 建表语句
|
||||
string createSql = @"
|
||||
CREATE TABLE Notification (
|
||||
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
Title TEXT,
|
||||
Content TEXT,
|
||||
Time TEXT,
|
||||
Type INT
|
||||
);";
|
||||
|
||||
// 复用现有的 ExecuteNonQuery 方法
|
||||
SQLitedata.ExecuteNonQuery(createSql, null);
|
||||
}
|
||||
private static void CreateFreshUserTableSERVER()
|
||||
{
|
||||
// 建表语句
|
||||
string createSql = @"
|
||||
CREATE TABLE Server (
|
||||
Enterprise TEXT,
|
||||
ServerID TEXT
|
||||
);";
|
||||
|
||||
// 复用现有的 ExecuteNonQuery 方法
|
||||
SQLitedata.ExecuteNonQuery(createSql, null);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user