208 lines
7.1 KiB
C#
208 lines
7.1 KiB
C#
/********************************************************************
|
||
文件: 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, //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日)。
|
||
}
|
||
|
||
/// <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
|
||
{
|
||
|
||
}
|
||
}
|