IndieGame/client/Assets/Ether/Scripts/Module/DataBase/DataBaseData.cs
DOBEST\zhaoyingjie f242607587 初始化工程
2024-10-11 10:12:15 +08:00

208 lines
7.1 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/********************************************************************
文件: 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
{
/// <summary>
/// 数据库表字段类型
/// </summary>
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, //FLOATMD或DOUBLE PRECISIONMD。 在此MD表示总共可以存储多达M位的值其中D位可以在小数点后。 例如显示为FLOAT7,3的列显示为-9999.999。 MySQL在存储值时会进行四舍五入因此如果将9999.0009插入FLOAT7,3则近似结果为9999.001。
Double, //比较浮点值可能会导致问题因为它们是近似值而不是精确值。因此为了存储可以用于比较的值如price、salary等请使用DECIMAL数据类型。
Decimal, //decimal(p,s) 存储固定的精度和小数位数。有效值为10 ^38 +1到10 ^38-1。
Date, //存储日期值范围为0001-01-011月1日1月至 9999-12-319999年12月31日
Time, //存储一天中的时间精度为100纳秒。有效值为000000.0000000到235959.9999999。
DateTime, //用于以'YYYY-MM-DD HH:MM:SS'格式存储合并的日期和时间值 存储组合的日期和时间值精度为3.33毫秒。的有效日期范围datetime是从1753-01-011753年1月1日到9999-12-319999年12月31日
}
/// <summary>
/// 数据库表字段数据
/// </summary>
public class DataBaseColumnTypeData
{
private static Dictionary<DataBaseColumnType, string> ColumnType = new Dictionary<DataBaseColumnType, string>()
{
{ 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<string> ParameterList = new List<string>()
{
"({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;
}
/// <summary>
/// 字段名称
/// </summary>
public string columnName;
/// <summary>
/// 字段类型
/// </summary>
public DataBaseColumnType columnType;
/// <summary>
/// 字段参数
/// </summary>
public List<int> parameter = new List<int>();
/// <summary>
/// 是否是主键, PRIMARY KEY约束标记对应的字段作为表的主键
/// </summary>
public bool isPrimaryKey = false;
/// <summary>
/// 是否可以为空, NOT NULL约束确保该字段不能接受一个NULL值。
/// </summary>
public bool isNotNull = false;
/// <summary>
/// AUTO_INCREMENT属性是标准SQL的MySQL扩展它告诉MySQL如果未指定该值则通过将前一个值增加1来自动为该字段分配一个值。仅适用于数字字段。
/// </summary>
public bool isAutoInchement = false;
/// <summary>
/// UNIQUE约束确保一列的每一行必须具有唯一值。
/// </summary>
public bool isUnique = false;
}
/// <summary>
/// 条件运算符类型
/// </summary>
public enum DataBaseFitterType
{
/// <summary>
/// 等于
/// </summary>
Equal,
/// <summary>
/// 大于
/// </summary>
Greaterl,
/// <summary>
/// 大于等于
/// </summary>
GreaterlEqual,
/// <summary>
/// 小于
/// </summary>
Less,
/// <summary>
/// 小于等于
/// </summary>
LessEqual,
/// <summary>
/// 不等于
/// </summary>
NotEqual,
}
/// <summary>
/// 数据库条件数据
/// </summary>
public class DataBaseFitter
{
private static Dictionary<DataBaseFitterType, string> FitterDic = new Dictionary<DataBaseFitterType, string>()
{
{ DataBaseFitterType.Equal, "=" },
{ DataBaseFitterType.Greaterl, ">" },
{ DataBaseFitterType.GreaterlEqual, ">=" },
{ DataBaseFitterType.Less, "<" },
{ DataBaseFitterType.LessEqual, "<=" },
{ DataBaseFitterType.NotEqual, "!=" },
};
public static string FormatFitter(DataBaseFitterType fitterType)
{
return FitterDic[fitterType];
}
/// <summary>
/// 字段名
/// </summary>
public string columnName;
/// <summary>
/// 条件运算符
/// </summary>
public DataBaseFitterType fitterType;
/// <summary>
/// 条件值
/// </summary>
public string fitterValue;
}
public class DataBaseData
{
}
}