初步实现统一的数据接入层,方便后面的数据表添加操作。考虑可复用的统一逻辑
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 (
|
||||
id BIGINT(20) NOT NULL AUTO_INCREMENT,
|
||||
type VARCHAR(12) NOT NULL,
|
||||
points MEDIUMTEXT 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,
|
||||
CREATE TABLE IF NOT EXISTS map_data (
|
||||
id VARCHAR(255) NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
description VARCHAR(255) NOT NULL,
|
||||
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