/******************************************************************** 文件: DataBaseData.cs 作者: 梦语 邮箱: 1982614048@qq.com 创建时间: 2024/03/29 17:28:19 最后修改: 梦语 最后修改时间: 2024/04/03 16:05:17 功能: *********************************************************************/ using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Ether { /// /// 数据库表字段类型 /// public enum DataBaseColumnType { Int, //存储从-2,147,483,648到2,147,483,647范围内的整数值。 SmallInt, //存储从-32,768到32,767范围内的整数值。 BigInt, //存储从-9,223,372,036,854,775,808到9,223,372,036,854,775,807的整数值。 Char, //char(n) 存储定长字符串。最大长度为8,000个字符。 VarChar, // varchar(n) 存储长度可变的字符串。最大长度为8,000个字符。 varchar(max) 存储长度可变的字符串。此处,max表示最大存储大小为2 GB。 Text, //存储长度可变的字符串。最大存储大小为2 GB。 Float, //FLOAT(M,D)或DOUBLE PRECISION(M,D)。 在此,(M,D)表示总共可以存储多达M位的值,其中D位可以在小数点后。 例如,显示为FLOAT(7,3)的列显示为-9999.999。 MySQL在存储值时会进行四舍五入,因此,如果将9999.0009插入FLOAT(7,3)列,则近似结果为9999.001。 Double, //比较浮点值可能会导致问题,因为它们是近似值,而不是精确值。因此,为了存储可以用于比较的值,如price、salary等,请使用DECIMAL数据类型。 Decimal, //decimal(p,s) 存储固定的精度和小数位数。有效值为10 ^38 +1到10 ^38-1。 Date, //存储日期值,范围为0001-01-01(1月1日,1月)至 9999-12-31(9999年12月31日)。 Time, //存储一天中的时间,精度为100纳秒。有效值为00:00:00.0000000到23:59:59.9999999。 DateTime, //用于以'YYYY-MM-DD HH:MM:SS'格式存储合并的日期和时间值 存储组合的日期和时间值,精度为3.33毫秒。的有效日期范围datetime是从1753-01-01(1753年1月1日)到9999-12-31(9999年12月31日)。 } /// /// 数据库表字段数据 /// public class DataBaseColumnTypeData { private static Dictionary ColumnType = new Dictionary() { { DataBaseColumnType.Int, "INT" }, { DataBaseColumnType.SmallInt, "SMALLINT" }, { DataBaseColumnType.BigInt, "BIGINT" }, { DataBaseColumnType.Char, "CHAR" }, { DataBaseColumnType.VarChar, "VARCHAR" }, { DataBaseColumnType.Text, "TEXT" }, { DataBaseColumnType.Float, "FLOAT" }, { DataBaseColumnType.Double, "DOUBLE" }, { DataBaseColumnType.Decimal, "DECIMAL" }, { DataBaseColumnType.Date, "DATE" }, { DataBaseColumnType.Time, "TIME" }, { DataBaseColumnType.DateTime, "DATETIME" }, }; public static List ParameterList = new List() { "({0})", "({0}, {1})" }; public static string FormatColumnType(DataBaseColumnTypeData columnData) { string str = ""; for (int i = 0; i < columnData.parameter.Count; i++) { if (i == 0) { str += $"({columnData.parameter[i]}"; } else { str += $",{columnData.parameter[i]}"; } if (i == columnData.parameter.Count - 1) { str += ")"; } } if (columnData.isNotNull) { str += " NOT NULL"; } if (columnData.isUnique) { str += " UNIQUE"; } if (columnData.isAutoInchement) { str += " AUTO_INCREMENT"; } if (columnData.isPrimaryKey) { str += " PRIMARY KEY"; } string result = $"{columnData.columnName} {ColumnType[columnData.columnType]}{str}"; return result; } /// /// 字段名称 /// public string columnName; /// /// 字段类型 /// public DataBaseColumnType columnType; /// /// 字段参数 /// public List parameter = new List(); /// /// 是否是主键, PRIMARY KEY约束标记对应的字段作为表的主键 /// public bool isPrimaryKey = false; /// /// 是否可以为空, NOT NULL约束确保该字段不能接受一个NULL值。 /// public bool isNotNull = false; /// /// AUTO_INCREMENT属性是标准SQL的MySQL扩展,它告诉MySQL如果未指定该值,则通过将前一个值增加1来自动为该字段分配一个值。仅适用于数字字段。 /// public bool isAutoInchement = false; /// /// UNIQUE约束确保一列的每一行必须具有唯一值。 /// public bool isUnique = false; } /// /// 条件运算符类型 /// public enum DataBaseFitterType { /// /// 等于 /// Equal, /// /// 大于 /// Greaterl, /// /// 大于等于 /// GreaterlEqual, /// /// 小于 /// Less, /// /// 小于等于 /// LessEqual, /// /// 不等于 /// NotEqual, } /// /// 数据库条件数据 /// public class DataBaseFitter { private static Dictionary FitterDic = new Dictionary() { { DataBaseFitterType.Equal, "=" }, { DataBaseFitterType.Greaterl, ">" }, { DataBaseFitterType.GreaterlEqual, ">=" }, { DataBaseFitterType.Less, "<" }, { DataBaseFitterType.LessEqual, "<=" }, { DataBaseFitterType.NotEqual, "!=" }, }; public static string FormatFitter(DataBaseFitterType fitterType) { return FitterDic[fitterType]; } /// /// 字段名 /// public string columnName; /// /// 条件运算符 /// public DataBaseFitterType fitterType; /// /// 条件值 /// public string fitterValue; } public class DataBaseData { } }