初步实现统一的数据接入层,方便后面的数据表添加操作。考虑可复用的统一逻辑
parent
2a0fa4e7a0
commit
2771293732
@ -1,112 +0,0 @@
|
|||||||
using MySql.Data.MySqlClient;
|
|
||||||
|
|
||||||
namespace OMS.NET.DbClass
|
|
||||||
{
|
|
||||||
public class AccountData
|
|
||||||
{
|
|
||||||
#region base
|
|
||||||
public string UserEmail { get; set; }
|
|
||||||
public string UserName { get; set; }
|
|
||||||
public string Password { get; set; }
|
|
||||||
public int? MapLayer { get; set; }
|
|
||||||
public string? DefaultA1 { get; set; }
|
|
||||||
public string? SavePoint { get; set; }
|
|
||||||
public string? UserQQ { get; set; }
|
|
||||||
public string? HeadColor { get; set; }
|
|
||||||
public int Mode { get; set; }
|
|
||||||
public int Phase { get; set; }
|
|
||||||
public string? Custom { get; set; }
|
|
||||||
|
|
||||||
public AccountData()
|
|
||||||
{
|
|
||||||
this.UserEmail = "";
|
|
||||||
this.UserName = "";
|
|
||||||
this.Password = "";
|
|
||||||
this.Mode = 1;
|
|
||||||
this.Phase = 1;
|
|
||||||
//this.Custom = "";
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
public static void Add(AccountData accountData)
|
|
||||||
{
|
|
||||||
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
|
||||||
connection.Open();
|
|
||||||
var query = @"INSERT INTO account_data (user_email, user_name, pass_word, map_layer, default_a1, save_point, user_qq, head_color, mode, phase, custom)
|
|
||||||
VALUES (@UserEmail, @UserName, @Password, @MapLayer, @DefaultA1, @SavePoint, @UserQQ, @HeadColor, @Mode, @Phase, @Custom)";
|
|
||||||
using var command = new MySqlCommand(query, connection);
|
|
||||||
command.Parameters.AddWithValue("@UserEmail", accountData.UserEmail);
|
|
||||||
command.Parameters.AddWithValue("@UserName", accountData.UserName);
|
|
||||||
command.Parameters.AddWithValue("@Password", accountData.Password);
|
|
||||||
command.Parameters.AddWithValue("@MapLayer", accountData.MapLayer ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@DefaultA1", accountData.DefaultA1 ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@SavePoint", accountData.SavePoint ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@UserQQ", accountData.UserQQ ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@HeadColor", accountData.HeadColor ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@Mode", accountData.Mode);
|
|
||||||
command.Parameters.AddWithValue("@Phase", accountData.Phase);
|
|
||||||
command.Parameters.AddWithValue("@Custom", accountData.Custom ?? (object)DBNull.Value);
|
|
||||||
command.ExecuteNonQuery();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void Update(AccountData accountData)
|
|
||||||
{
|
|
||||||
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
|
||||||
connection.Open();
|
|
||||||
var query = @"UPDATE account_data SET user_name = @UserName, pass_word = @Password, map_layer = @MapLayer, default_a1 = @DefaultA1, save_point = @SavePoint, user_qq = @UserQQ, head_color = @HeadColor, mode = @Mode, phase = @Phase, custom = @Custom
|
|
||||||
WHERE user_email = @UserEmail";
|
|
||||||
using var command = new MySqlCommand(query, connection);
|
|
||||||
command.Parameters.AddWithValue("@UserEmail", accountData.UserEmail);
|
|
||||||
command.Parameters.AddWithValue("@UserName", accountData.UserName);
|
|
||||||
command.Parameters.AddWithValue("@Password", accountData.Password);
|
|
||||||
command.Parameters.AddWithValue("@MapLayer", accountData.MapLayer ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@DefaultA1", accountData.DefaultA1 ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@SavePoint", accountData.SavePoint ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@UserQQ", accountData.UserQQ ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@HeadColor", accountData.HeadColor ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@Mode", accountData.Mode);
|
|
||||||
command.Parameters.AddWithValue("@Phase", accountData.Phase);
|
|
||||||
command.Parameters.AddWithValue("@Custom", accountData.Custom ?? (object)DBNull.Value);
|
|
||||||
command.ExecuteNonQuery();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void Delete(string userEmail)
|
|
||||||
{
|
|
||||||
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
|
||||||
connection.Open();
|
|
||||||
var query = @"DELETE FROM account_data WHERE user_email = @UserEmail";
|
|
||||||
using var command = new MySqlCommand(query, connection);
|
|
||||||
command.Parameters.AddWithValue("@UserEmail", userEmail);
|
|
||||||
command.ExecuteNonQuery();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static AccountData? Get(string userEmail)
|
|
||||||
{
|
|
||||||
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
|
||||||
connection.Open();
|
|
||||||
var query = @"SELECT user_email, user_name, pass_word, map_layer, default_a1, save_point, user_qq, head_color, mode, phase, custom
|
|
||||||
FROM account_data WHERE user_email = @UserEmail";
|
|
||||||
using var command = new MySqlCommand(query, connection);
|
|
||||||
command.Parameters.AddWithValue("@UserEmail", userEmail);
|
|
||||||
using var reader = command.ExecuteReader();
|
|
||||||
if (reader.Read())
|
|
||||||
{
|
|
||||||
return new AccountData
|
|
||||||
{
|
|
||||||
UserEmail = reader.GetString("user_email"),
|
|
||||||
UserName = reader.GetString("user_name"),
|
|
||||||
Password = reader.GetString("pass_word"),
|
|
||||||
MapLayer = reader["map_layer"] as int?,
|
|
||||||
DefaultA1 = reader["default_a1"] as string,
|
|
||||||
SavePoint = reader["save_point"] as string,
|
|
||||||
UserQQ = reader["user_qq"] as string,
|
|
||||||
HeadColor = reader["head_color"] as string,
|
|
||||||
Mode = reader.GetInt32("mode"),
|
|
||||||
Phase = reader.GetInt32("phase"),
|
|
||||||
Custom = reader["custom"] as string,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -0,0 +1,255 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using MySql.Data.MySqlClient;
|
||||||
|
using OMS.NET.Common;
|
||||||
|
namespace OMS.NET.DbClass
|
||||||
|
{
|
||||||
|
[AttributeUsage(AttributeTargets.Class, Inherited = false)]
|
||||||
|
public class TableAttribute : Attribute
|
||||||
|
{
|
||||||
|
public string TableName { get; }
|
||||||
|
public TableAttribute(string tableName)
|
||||||
|
{
|
||||||
|
TableName = tableName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[AttributeUsage(AttributeTargets.Property, Inherited = false)]
|
||||||
|
public class ColumnAttribute : Attribute
|
||||||
|
{
|
||||||
|
public string ColumnName { get; }
|
||||||
|
public bool IsPrimaryKey { get; }
|
||||||
|
|
||||||
|
public bool IsIdentity { get; } // 是否自增列
|
||||||
|
public ColumnAttribute(string columnName, bool isPrimaryKey = false, bool isIdentity = false)
|
||||||
|
{
|
||||||
|
ColumnName = columnName;
|
||||||
|
IsPrimaryKey = isPrimaryKey;
|
||||||
|
IsIdentity = isIdentity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public class BaseObject
|
||||||
|
{
|
||||||
|
private static string GetTableName(Type type)
|
||||||
|
{
|
||||||
|
var attr = type.GetCustomAttribute<TableAttribute>();
|
||||||
|
return attr?.TableName ?? throw new Exception($"{type.Name} 没有指定数据表");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IEnumerable<PropertyInfo> GetProperties(Type type)
|
||||||
|
{
|
||||||
|
return type.GetProperties()
|
||||||
|
.Where(p => p.GetCustomAttribute<ColumnAttribute>() != null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static PropertyInfo GetPrimaryKeyProperties(Type type)
|
||||||
|
{
|
||||||
|
var primaryKeyProperties = GetProperties(type)
|
||||||
|
.Where(p => p.GetCustomAttribute<ColumnAttribute>()?.IsPrimaryKey == true)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
if (primaryKeyProperties.Count == 0)
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("No primary key defined for the class.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (primaryKeyProperties.Count != 1)
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("Multiple primary keys defined for the class. Only one primary key is allowed.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return primaryKeyProperties.First();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IEnumerable<PropertyInfo> GetNonKeyProperties(Type type)
|
||||||
|
{
|
||||||
|
return GetProperties(type)
|
||||||
|
.Where(p => p.GetCustomAttribute<ColumnAttribute>()?.IsPrimaryKey == false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static PropertyInfo? GetIdentityKeyProperty(Type type)
|
||||||
|
{
|
||||||
|
var primaryKey = GetPrimaryKeyProperties(type);
|
||||||
|
return (primaryKey.GetCustomAttribute<ColumnAttribute>()!.IsIdentity == true) ? null : primaryKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetInsertSql(Type type)
|
||||||
|
{
|
||||||
|
var tableName = GetTableName(type);
|
||||||
|
var identityKey = GetIdentityKeyProperty(type);
|
||||||
|
var columns = GetNonKeyProperties(type)
|
||||||
|
.Select(p => p.GetCustomAttribute<ColumnAttribute>()!.ColumnName).ToList();
|
||||||
|
var values = GetNonKeyProperties(type)
|
||||||
|
.Select(p => "@" + p.Name).ToList();
|
||||||
|
|
||||||
|
if (identityKey != null)
|
||||||
|
{
|
||||||
|
// Exclude the identity key from columns and values for insert statement
|
||||||
|
columns.Add(identityKey.GetCustomAttribute<ColumnAttribute>()!.ColumnName);
|
||||||
|
values.Add("@" + identityKey.Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $"INSERT INTO {tableName} ({string.Join(", ", columns)}) VALUES ({string.Join(", ", values)})";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetUpdateSql(Type type)
|
||||||
|
{
|
||||||
|
var tableName = GetTableName(type);
|
||||||
|
var setClause = string.Join(", ",
|
||||||
|
GetNonKeyProperties(type)
|
||||||
|
.Select(p => $"{p.GetCustomAttribute<ColumnAttribute>()!.ColumnName} = @{p.Name}"));
|
||||||
|
var primaryKey = GetPrimaryKeyProperties(type);
|
||||||
|
var whereClause = $"{primaryKey.GetCustomAttribute<ColumnAttribute>()!.ColumnName} = @{primaryKey.Name}";
|
||||||
|
|
||||||
|
return $"UPDATE {tableName} SET {setClause} WHERE {whereClause}";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetDeleteSql(Type type)
|
||||||
|
{
|
||||||
|
var tableName = GetTableName(type);
|
||||||
|
var primaryKey = GetPrimaryKeyProperties(type);
|
||||||
|
var whereClause = $"{primaryKey.GetCustomAttribute<ColumnAttribute>()!.ColumnName} = @{primaryKey.Name}";
|
||||||
|
|
||||||
|
return $"DELETE FROM {tableName} WHERE {whereClause}";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetSelectSql(Type type)
|
||||||
|
{
|
||||||
|
var tableName = GetTableName(type);
|
||||||
|
var columns = string.Join(", ",
|
||||||
|
GetProperties(type)
|
||||||
|
.Select(p => p.GetCustomAttribute<ColumnAttribute>()!.ColumnName));
|
||||||
|
|
||||||
|
return $"SELECT {columns} FROM {tableName}";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetSelectSqlWithPrimaryKey(Type type)
|
||||||
|
{
|
||||||
|
var tableName = GetTableName(type);
|
||||||
|
var columns = string.Join(", ",
|
||||||
|
GetProperties(type)
|
||||||
|
.Select(p => p.GetCustomAttribute<ColumnAttribute>()!.ColumnName));
|
||||||
|
var primaryKey = GetPrimaryKeyProperties(type);
|
||||||
|
var whereClause = $"{primaryKey.GetCustomAttribute<ColumnAttribute>()!.ColumnName} = @{primaryKey.Name}";
|
||||||
|
|
||||||
|
return $"SELECT {columns} FROM {tableName} WHERE {whereClause}";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Test()
|
||||||
|
{
|
||||||
|
Console.WriteLine("===========this is a test area=================");
|
||||||
|
Console.WriteLine(GetInsertSql(GetType()));
|
||||||
|
Console.WriteLine(GetDeleteSql(GetType()));
|
||||||
|
Console.WriteLine(GetUpdateSql(GetType()));
|
||||||
|
Console.WriteLine(GetSelectSql(GetType()));
|
||||||
|
Console.WriteLine(GetSelectSqlWithPrimaryKey(GetType()));
|
||||||
|
Console.WriteLine("===========this is a test area=================");
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void Insert()
|
||||||
|
{
|
||||||
|
var type = GetType();
|
||||||
|
var insertSql = GetInsertSql(GetType());
|
||||||
|
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
||||||
|
connection.Open(); // 确保在执行命令之前打开连接
|
||||||
|
using var command = new MySqlCommand(insertSql, connection);
|
||||||
|
AddParameters(command);
|
||||||
|
Console.WriteLine($"SQL: {command.CommandText}");
|
||||||
|
foreach (MySqlParameter param in command.Parameters)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Parameter: {param.ParameterName}, Value: {param.Value}");
|
||||||
|
}
|
||||||
|
command.ExecuteNonQuery();
|
||||||
|
Log.Info($"{GetTableName(type)}数据表插入({string.Join(',', ShowDetail())})");
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void Update()
|
||||||
|
{
|
||||||
|
var type = GetType();
|
||||||
|
var updateSql = GetUpdateSql(GetType());
|
||||||
|
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
||||||
|
connection.Open(); // 确保在执行命令之前打开连接
|
||||||
|
using var command = new MySqlCommand(updateSql, connection);
|
||||||
|
AddParameters(command);
|
||||||
|
command.ExecuteNonQuery();
|
||||||
|
Log.Info($"{GetTableName(type)}数据表修改({string.Join(',', ShowDetail())})");
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void Delete()
|
||||||
|
{
|
||||||
|
var type = GetType();
|
||||||
|
var deleteSql = GetDeleteSql(GetType());
|
||||||
|
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
||||||
|
connection.Open(); // 确保在执行命令之前打开连接
|
||||||
|
using var command = new MySqlCommand(deleteSql, connection);
|
||||||
|
AddParameters(command);
|
||||||
|
command.ExecuteNonQuery();
|
||||||
|
Log.Info($"{GetTableName(type)}数据表删除({string.Join(',', ShowDetail())})");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<T> SelectAll<T>() where T : BaseObject, new()
|
||||||
|
{
|
||||||
|
var type = typeof(T);
|
||||||
|
var selectSql = GetSelectSql(type);
|
||||||
|
|
||||||
|
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
||||||
|
connection.Open(); // 确保在执行命令之前打开连接
|
||||||
|
using var command = new MySqlCommand(selectSql, connection);
|
||||||
|
using var reader = command.ExecuteReader();
|
||||||
|
var results = new List<T>();
|
||||||
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
var item = new T();
|
||||||
|
PopulateObject(reader, item);
|
||||||
|
results.Add(item);
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static T? Get<T>(object key) where T : BaseObject, new()
|
||||||
|
{
|
||||||
|
var type = typeof(T);
|
||||||
|
var selectSql = GetSelectSqlWithPrimaryKey(type);
|
||||||
|
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
||||||
|
connection.Open(); // 确保在执行命令之前打开连接
|
||||||
|
using var command = new MySqlCommand(selectSql, connection);
|
||||||
|
var primaryKey = GetPrimaryKeyProperties(type);
|
||||||
|
command.Parameters.AddWithValue("@" + primaryKey.GetCustomAttribute<ColumnAttribute>()!.ColumnName, key);
|
||||||
|
using var reader = command.ExecuteReader();
|
||||||
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
var item = new T();
|
||||||
|
PopulateObject(reader, item);
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AddParameters(MySqlCommand command)
|
||||||
|
{
|
||||||
|
foreach (var property in GetProperties(GetType()))
|
||||||
|
{
|
||||||
|
//var columnAttr = property.GetCustomAttribute<ColumnAttribute>()!;
|
||||||
|
command.Parameters.AddWithValue("@" + property.Name, property.GetValue(this));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerable<string> ShowDetail()
|
||||||
|
{
|
||||||
|
return GetProperties(GetType()).Select(p => $"{p.Name}={p.GetValue(this)}");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void PopulateObject(MySqlDataReader reader, BaseObject obj)
|
||||||
|
{
|
||||||
|
var type = obj.GetType();
|
||||||
|
foreach (var property in GetProperties(type))
|
||||||
|
{
|
||||||
|
var columnAttr = property.GetCustomAttribute<ColumnAttribute>()!;
|
||||||
|
var value = reader[columnAttr.ColumnName];
|
||||||
|
if (value != DBNull.Value)
|
||||||
|
{
|
||||||
|
property.SetValue(obj, Convert.ChangeType(value, property.PropertyType));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
namespace OMS.NET.DbClass
|
||||||
|
{
|
||||||
|
[Table("map_data")]
|
||||||
|
public class Map : BaseObject
|
||||||
|
{
|
||||||
|
[Column("id", true)] // Primary Key and Identity false
|
||||||
|
public string Id { get; set; }
|
||||||
|
|
||||||
|
[Column("name")]
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
[Column("description")]
|
||||||
|
public string Description { get; set; }
|
||||||
|
|
||||||
|
public Map()
|
||||||
|
{
|
||||||
|
Id = "";
|
||||||
|
Name = "";
|
||||||
|
Description = "";
|
||||||
|
}
|
||||||
|
public Map(string key, string name, string description)
|
||||||
|
{
|
||||||
|
Id = key;
|
||||||
|
Name = name;
|
||||||
|
Description = description;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,155 +0,0 @@
|
|||||||
using MySql.Data.MySqlClient;
|
|
||||||
|
|
||||||
namespace OMS.NET.DbClass
|
|
||||||
{
|
|
||||||
public class MapData
|
|
||||||
{
|
|
||||||
#region base
|
|
||||||
public long Id { get; set; }
|
|
||||||
public string Type { get; set; }
|
|
||||||
public string Points { get; set; }
|
|
||||||
public string Point { get; set; }
|
|
||||||
public string? Color { get; set; }
|
|
||||||
public int Phase { get; set; }
|
|
||||||
public int? Width { get; set; }
|
|
||||||
public string? ChildRelations { get; set; }
|
|
||||||
public string? FatherRelations { get; set; }
|
|
||||||
public string? ChildNodes { get; set; }
|
|
||||||
public string? FatherNode { get; set; }
|
|
||||||
public string? Details { get; set; }
|
|
||||||
public string? Custom { get; set; }
|
|
||||||
|
|
||||||
public MapData()
|
|
||||||
{
|
|
||||||
this.Id = -1;
|
|
||||||
this.Type = "";
|
|
||||||
this.Points = "";
|
|
||||||
this.Point = "";
|
|
||||||
this.Phase = 1;
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
public static void Add(MapData mapData)
|
|
||||||
{
|
|
||||||
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
|
||||||
connection.Open();
|
|
||||||
var query = @"INSERT INTO map_0_data (type, points, point, color, phase, width, child_relations, father_relations, child_nodes, father_node, details, custom)
|
|
||||||
VALUES (@Type, @Points, @Point, @Color, @Phase, @Width, @ChildRelations, @FatherRelations, @ChildNodes, @FatherNode, @Details, @Custom)";
|
|
||||||
using MySqlCommand command = new(query, connection);
|
|
||||||
command.Parameters.AddWithValue("@Type", mapData.Type);
|
|
||||||
command.Parameters.AddWithValue("@Points", mapData.Points);
|
|
||||||
command.Parameters.AddWithValue("@Point", mapData.Point);
|
|
||||||
command.Parameters.AddWithValue("@Color", mapData.Color ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@Phase", mapData.Phase);
|
|
||||||
command.Parameters.AddWithValue("@Width", mapData.Width ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@ChildRelations", mapData.ChildRelations ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@FatherRelations", mapData.FatherRelations ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@ChildNodes", mapData.ChildNodes ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@FatherNode", mapData.FatherNode ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@Details", mapData.Details ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@Custom", mapData.Custom ?? (object)DBNull.Value);
|
|
||||||
command.ExecuteNonQuery();
|
|
||||||
mapData.Id = command.LastInsertedId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int Update(MapData mapData)
|
|
||||||
{
|
|
||||||
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
|
||||||
connection.Open();
|
|
||||||
var query = @"UPDATE map_0_data SET type = @Type, points = @Points, point = @Point, color = @Color, phase = @Phase, width = @Width,
|
|
||||||
child_relations = @ChildRelations, father_relations = @FatherRelations, child_nodes = @ChildNodes, father_node = @FatherNode,
|
|
||||||
details = @Details, custom = @Custom WHERE id = @Id";
|
|
||||||
using MySqlCommand command = new(query, connection);
|
|
||||||
command.Parameters.AddWithValue("@Id", mapData.Id);
|
|
||||||
command.Parameters.AddWithValue("@Type", mapData.Type);
|
|
||||||
command.Parameters.AddWithValue("@Points", mapData.Points);
|
|
||||||
command.Parameters.AddWithValue("@Point", mapData.Point);
|
|
||||||
command.Parameters.AddWithValue("@Color", mapData.Color ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@Phase", mapData.Phase);
|
|
||||||
command.Parameters.AddWithValue("@Width", mapData.Width ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@ChildRelations", mapData.ChildRelations ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@FatherRelations", mapData.FatherRelations ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@ChildNodes", mapData.ChildNodes ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@FatherNode", mapData.FatherNode ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@Details", mapData.Details ?? (object)DBNull.Value);
|
|
||||||
command.Parameters.AddWithValue("@Custom", mapData.Custom ?? (object)DBNull.Value);
|
|
||||||
return command.ExecuteNonQuery();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void Delete(long id)
|
|
||||||
{
|
|
||||||
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
|
||||||
connection.Open();
|
|
||||||
var query = @"DELETE FROM map_0_data WHERE id = @Id";
|
|
||||||
using MySqlCommand command = new(query, connection);
|
|
||||||
command.Parameters.AddWithValue("@Id", id);
|
|
||||||
command.ExecuteNonQuery();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MapData? Get(long id)
|
|
||||||
{
|
|
||||||
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
|
||||||
connection.Open();
|
|
||||||
var query = @"SELECT id, type, points, point, color, phase, width, child_relations, father_relations, child_nodes, father_node, details, custom
|
|
||||||
FROM map_0_data WHERE id = @Id";
|
|
||||||
using MySqlCommand command = new(query, connection);
|
|
||||||
command.Parameters.AddWithValue("@Id", id);
|
|
||||||
using MySqlDataReader reader = command.ExecuteReader();
|
|
||||||
if (reader.Read())
|
|
||||||
{
|
|
||||||
return new MapData
|
|
||||||
{
|
|
||||||
Id = reader.GetInt64("id"),
|
|
||||||
Type = reader.GetString("type"),
|
|
||||||
Points = reader.GetString("points"),
|
|
||||||
Point = reader.GetString("point"),
|
|
||||||
Color = reader["color"] as string,
|
|
||||||
Phase = reader.GetInt32("phase"),
|
|
||||||
Width = reader["width"] as int?,
|
|
||||||
ChildRelations = reader["child_relations"] as string,
|
|
||||||
FatherRelations = reader["father_relations"] as string,
|
|
||||||
ChildNodes = reader["child_nodes"] as string,
|
|
||||||
FatherNode = reader["father_node"] as string,
|
|
||||||
Details = reader["details"] as string,
|
|
||||||
Custom = reader["custom"] as string
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<MapData> GetMapDataList()
|
|
||||||
{
|
|
||||||
List<MapData> mapDataList = new();
|
|
||||||
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
|
||||||
connection.Open();
|
|
||||||
var query = @"SELECT * FROM map_0_data";
|
|
||||||
using var command = new MySqlCommand(query, connection);
|
|
||||||
using var reader = command.ExecuteReader();
|
|
||||||
if (reader.HasRows)
|
|
||||||
{
|
|
||||||
while (reader.Read())
|
|
||||||
{
|
|
||||||
var mapData = new MapData
|
|
||||||
{
|
|
||||||
Id = reader.GetInt64("id"),
|
|
||||||
Type = reader.GetString("type"),
|
|
||||||
Points = reader.GetString("points"),
|
|
||||||
Point = reader.GetString("point"),
|
|
||||||
Color = reader.IsDBNull(reader.GetOrdinal("color")) ? null : reader.GetString("color"),
|
|
||||||
Phase = reader.GetInt32("phase"),
|
|
||||||
Width = reader.IsDBNull(reader.GetOrdinal("width")) ? (int?)null : reader.GetInt32("width"),
|
|
||||||
ChildRelations = reader.IsDBNull(reader.GetOrdinal("child_relations")) ? null : reader.GetString("child_relations"),
|
|
||||||
FatherRelations = reader.IsDBNull(reader.GetOrdinal("father_relations")) ? null : reader.GetString("father_relations"),
|
|
||||||
ChildNodes = reader.IsDBNull(reader.GetOrdinal("child_nodes")) ? null : reader.GetString("child_nodes"),
|
|
||||||
FatherNode = reader.IsDBNull(reader.GetOrdinal("father_node")) ? null : reader.GetString("father_node"),
|
|
||||||
Details = reader.IsDBNull(reader.GetOrdinal("details")) ? null : reader.GetString("details"),
|
|
||||||
Custom = reader.IsDBNull(reader.GetOrdinal("custom")) ? null : reader.GetString("custom")
|
|
||||||
};
|
|
||||||
mapDataList.Add(mapData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return mapDataList;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,142 +0,0 @@
|
|||||||
using MySql.Data.MySqlClient;
|
|
||||||
|
|
||||||
namespace OMS.NET.DbClass
|
|
||||||
{
|
|
||||||
public class MapLayer
|
|
||||||
{
|
|
||||||
#region base
|
|
||||||
public long Id { get; set; }
|
|
||||||
public string Type { get; set; }
|
|
||||||
public string Members { get; set; }
|
|
||||||
public string Structure { get; set; }
|
|
||||||
public int Phase { get; set; }
|
|
||||||
|
|
||||||
public MapLayer()
|
|
||||||
{
|
|
||||||
this.Id = 0;
|
|
||||||
this.Type = "";
|
|
||||||
this.Members = "";
|
|
||||||
this.Structure = "";
|
|
||||||
this.Phase = 1;
|
|
||||||
}
|
|
||||||
public MapLayer(long id, string type, string members, string structure, int phase)
|
|
||||||
{
|
|
||||||
Id = id;
|
|
||||||
Type = type;
|
|
||||||
Members = members;
|
|
||||||
Structure = structure;
|
|
||||||
Phase = phase;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
public static void Add(MapLayer mapLayer)
|
|
||||||
{
|
|
||||||
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
|
||||||
connection.Open();
|
|
||||||
var query = @"INSERT INTO map_0_layer (type, members, structure, phase)
|
|
||||||
VALUES (@Type, @Members, @Structure, @Phase)";
|
|
||||||
using var command = new MySqlCommand(query, connection);
|
|
||||||
command.Parameters.AddWithValue("@Type", mapLayer.Type);
|
|
||||||
command.Parameters.AddWithValue("@Members", mapLayer.Members);
|
|
||||||
command.Parameters.AddWithValue("@Structure", mapLayer.Structure);
|
|
||||||
command.Parameters.AddWithValue("@Phase", mapLayer.Phase);
|
|
||||||
command.ExecuteNonQuery();
|
|
||||||
mapLayer.Id = command.LastInsertedId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void Update(MapLayer mapLayer)
|
|
||||||
{
|
|
||||||
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
|
||||||
connection.Open();
|
|
||||||
var query = @"UPDATE map_0_layer SET type = @Type, members = @Members, structure = @Structure, phase = @Phase
|
|
||||||
WHERE id = @Id";
|
|
||||||
using var command = new MySqlCommand(query, connection);
|
|
||||||
command.Parameters.AddWithValue("@Id", mapLayer.Id);
|
|
||||||
command.Parameters.AddWithValue("@Type", mapLayer.Type);
|
|
||||||
command.Parameters.AddWithValue("@Members", mapLayer.Members);
|
|
||||||
command.Parameters.AddWithValue("@Structure", mapLayer.Structure);
|
|
||||||
command.Parameters.AddWithValue("@Phase", mapLayer.Phase);
|
|
||||||
command.ExecuteNonQuery();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void Delete(long id)
|
|
||||||
{
|
|
||||||
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
|
||||||
connection.Open();
|
|
||||||
var query = @"DELETE FROM map_0_layer WHERE id = @Id";
|
|
||||||
using var command = new MySqlCommand(query, connection);
|
|
||||||
command.Parameters.AddWithValue("@Id", id);
|
|
||||||
command.ExecuteNonQuery();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MapLayer? Get(long id)
|
|
||||||
{
|
|
||||||
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
|
||||||
connection.Open();
|
|
||||||
var query = @"SELECT id, type, members, structure, phase FROM map_0_layer WHERE id = @Id";
|
|
||||||
using var command = new MySqlCommand(query, connection);
|
|
||||||
command.Parameters.AddWithValue("@Id", id);
|
|
||||||
using var reader = command.ExecuteReader();
|
|
||||||
if (reader.Read())
|
|
||||||
{
|
|
||||||
return new MapLayer
|
|
||||||
{
|
|
||||||
Id = reader.GetInt64("id"),
|
|
||||||
Type = reader.GetString("type"),
|
|
||||||
Members = reader.GetString("members"),
|
|
||||||
Structure = reader.GetString("structure"),
|
|
||||||
Phase = reader.GetInt32("phase")
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取所有MapLayer数据
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static List<MapLayer> GetMapLayerList()
|
|
||||||
{
|
|
||||||
List<MapLayer> mapLayerList = new();
|
|
||||||
using MySqlConnection connection = new(GlobalArea.ConnectionStringWithDbName);
|
|
||||||
connection.Open();
|
|
||||||
string query = "SELECT * FROM map_0_layer";
|
|
||||||
using var command = new MySqlCommand(query, connection);
|
|
||||||
using var reader = command.ExecuteReader();
|
|
||||||
if (reader.HasRows)
|
|
||||||
{
|
|
||||||
while (reader.Read())
|
|
||||||
{
|
|
||||||
var mapLayer = new MapLayer
|
|
||||||
{
|
|
||||||
Id = reader.GetInt64("id"),
|
|
||||||
Type = reader.GetString("type"),
|
|
||||||
Members = reader.GetString("members"),
|
|
||||||
Structure = reader.GetString("structure"),
|
|
||||||
Phase = reader.GetInt32("phase")
|
|
||||||
};
|
|
||||||
mapLayerList.Add(mapLayer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return mapLayerList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 指定是否将指定字段编码成base64格式 ???
|
|
||||||
/// </summary>
|
|
||||||
public static void ProcessMapLayers(List<MapLayer> mapLayers, bool encode = false)
|
|
||||||
{
|
|
||||||
mapLayers.ForEach(mapLayer =>
|
|
||||||
{
|
|
||||||
if (encode)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,40 +1,6 @@
|
|||||||
CREATE TABLE IF NOT EXISTS map_0_data (
|
CREATE TABLE IF NOT EXISTS map_data (
|
||||||
id BIGINT(20) NOT NULL AUTO_INCREMENT,
|
id VARCHAR(255) NOT NULL,
|
||||||
type VARCHAR(12) NOT NULL,
|
name VARCHAR(255) NOT NULL,
|
||||||
points MEDIUMTEXT NOT NULL,
|
description VARCHAR(255) NOT NULL,
|
||||||
point VARCHAR(255) NOT NULL,
|
|
||||||
color VARCHAR(255),
|
|
||||||
phase INT(1) NOT NULL,
|
|
||||||
width INT(11),
|
|
||||||
child_relations MEDIUMTEXT,
|
|
||||||
father_relations VARCHAR(255),
|
|
||||||
child_nodes MEDIUMTEXT,
|
|
||||||
father_node VARCHAR(255),
|
|
||||||
details MEDIUMTEXT,
|
|
||||||
custom MEDIUMTEXT,
|
|
||||||
PRIMARY KEY (id)
|
PRIMARY KEY (id)
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS map_0_layer (
|
|
||||||
id BIGINT(20) NOT NULL AUTO_INCREMENT,
|
|
||||||
type VARCHAR(255) NOT NULL,
|
|
||||||
members MEDIUMTEXT NOT NULL,
|
|
||||||
structure MEDIUMTEXT NOT NULL,
|
|
||||||
phase INT(1) NOT NULL,
|
|
||||||
PRIMARY KEY (id)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS account_data (
|
|
||||||
user_email VARCHAR(255) NOT NULL,
|
|
||||||
user_name VARCHAR(255) NOT NULL,
|
|
||||||
pass_word VARCHAR(255) NOT NULL,
|
|
||||||
map_layer INT(11),
|
|
||||||
default_a1 VARCHAR(255),
|
|
||||||
save_point MEDIUMTEXT,
|
|
||||||
user_qq VARCHAR(255),
|
|
||||||
head_color VARCHAR(6),
|
|
||||||
mode INT(1) NOT NULL,
|
|
||||||
phase INT(1) NOT NULL,
|
|
||||||
custom MEDIUMTEXT,
|
|
||||||
PRIMARY KEY (user_email)
|
|
||||||
);
|
);
|
||||||
Loading…
Reference in New Issue