/********************************************************************
文件: 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
{
}
}