Update MySqlConnector

This commit is contained in:
sunkaixuan 2022-06-24 19:35:09 +08:00
parent e541e699dc
commit 7785b9d203
5 changed files with 63 additions and 15 deletions

View File

@ -34,7 +34,8 @@ namespace SqlSugar.MySqlConnector
CASE WHEN is_nullable = 'YES'
THEN true ELSE false END AS `IsNullable`,
numeric_scale as Scale,
numeric_scale as DecimalDigits
numeric_scale as DecimalDigits,
LOCATE( 'unsigned',COLUMN_type ) >0 as IsUnsigned
FROM
Information_schema.columns where TABLE_NAME='{0}' and TABLE_SCHEMA=(select database()) ORDER BY ordinal_position";
return sql;
@ -274,6 +275,23 @@ namespace SqlSugar.MySqlConnector
#endregion
#region Methods
public override bool IsAnyColumnRemark(string columnName, string tableName)
{
var isAny=this.Context.DbMaintenance.GetColumnInfosByTableName(tableName, false)
.Any(it => it.ColumnDescription.HasValue() && it.DbColumnName.ToLower()==columnName.ToLower());
return isAny;
}
public override bool AddColumnRemark(string columnName, string tableName, string description)
{
//base.AddColumnRemark(columnName, tableName, description);
var message= @"db.DbMaintenance.UpdateColumn(""tablename"", new DbColumnInfo()
{{
DataType = ""VARCHAR(30) NOT NULL COMMENT 'xxxxx'"",
DbColumnName = ""columnname""
}})" ;
Check.Exception(true,"MySql no support AddColumnRemark , use " + message);
return true;
}
/// <summary>
///by current connection string
/// </summary>

View File

@ -58,7 +58,14 @@ namespace SqlSugar.MySqlConnector
}
catch (MySqlException ex)
{
throw ex;
if (ex.Message == "The used command is not allowed with this MySQL version")
{
Check.ExceptionEasy("connection string add : AllowLoadLocalInfile=true", "BulkCopy MySql连接字符串需要添加 AllowLoadLocalInfile=true; 添加后如果还不行Mysql数据库执行一下 SET GLOBAL local_infile=1 ");
}
else
{
throw ex;
}
}
finally
{

View File

@ -27,7 +27,8 @@ namespace SqlSugar.MySqlConnector
}
}
}
public override object FormatValue(object value)
int i = 0;
public object FormatValue(object value,string name)
{
var n = "N";
if (this.Context.CurrentConnectionConfig.MoreSettings != null && this.Context.CurrentConnectionConfig.MoreSettings.DisableNvarchar)
@ -44,9 +45,9 @@ namespace SqlSugar.MySqlConnector
if (type == UtilConstants.DateType)
{
var date = value.ObjToDate();
if (date < Convert.ToDateTime("1900-1-1"))
if (date < UtilMethods.GetMinDate(this.Context.CurrentConnectionConfig))
{
date = Convert.ToDateTime("1900-1-1");
date = UtilMethods.GetMinDate(this.Context.CurrentConnectionConfig);
}
return "'" + date.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'";
}
@ -72,7 +73,10 @@ namespace SqlSugar.MySqlConnector
}
else if (type == UtilConstants.StringType || type == UtilConstants.ObjType)
{
return n+"'" + GetString(value).ToSqlFilter() + "'";
++i;
var parameterName = this.Builder.SqlParameterKeyWord + name + i;
this.Parameters.Add(new SugarParameter(parameterName, value));
return parameterName;
}
else
{
@ -102,6 +106,7 @@ namespace SqlSugar.MySqlConnector
if (isSingle)
{
string columnParametersString = string.Join(",", this.DbColumnInfoList.Select(it => Builder.SqlParameterKeyWord + it.DbColumnName));
ActionMinDate();
return string.Format(SqlTemplate, GetTableNameString, columnsString, columnParametersString);
}
else
@ -115,7 +120,7 @@ namespace SqlSugar.MySqlConnector
foreach (var item in groupList)
{
batchInsetrSql.Append("(");
insertColumns = string.Join(",", item.Select(it => FormatValue(it.Value)));
insertColumns = string.Join(",", item.Select(it => FormatValue(it.Value,it.PropertyName)));
batchInsetrSql.Append(insertColumns);
if (groupList.Last() == item)
{

View File

@ -59,7 +59,7 @@ namespace SqlSugar.MySqlConnector
{
updateTable.Append(SqlTemplateBatchUnion);
}
updateTable.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value),this.Builder.GetTranslationColumnName(it.DbColumnName)))));
updateTable.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value,it.PropertyName),this.Builder.GetTranslationColumnName(it.DbColumnName)))));
++i;
}
pageIndex++;
@ -89,7 +89,8 @@ namespace SqlSugar.MySqlConnector
}
return batchUpdateSql.ToString();
}
public override object FormatValue(object value)
int i = 0;
public object FormatValue(object value,string name)
{
var n = "N";
if (this.Context.CurrentConnectionConfig.MoreSettings != null&&this.Context.CurrentConnectionConfig.MoreSettings.DisableNvarchar)
@ -106,9 +107,9 @@ namespace SqlSugar.MySqlConnector
if (type == UtilConstants.DateType)
{
var date = value.ObjToDate();
if (date < Convert.ToDateTime("1900-1-1"))
if (date < UtilMethods.GetMinDate(this.Context.CurrentConnectionConfig))
{
date = Convert.ToDateTime("1900-1-1");
date = UtilMethods.GetMinDate(this.Context.CurrentConnectionConfig);
}
return "'" + date.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'";
}
@ -142,7 +143,10 @@ namespace SqlSugar.MySqlConnector
}
else if (type == UtilConstants.StringType || type == UtilConstants.ObjType)
{
return n+"'" + GetString(value).ToSqlFilter() + "'";
++i;
var parameterName = this.Builder.SqlParameterKeyWord + name + i;
this.Parameters.Add(new SugarParameter(parameterName, value));
return parameterName;
}
else
{

View File

@ -16,7 +16,21 @@ namespace SqlSugar.MySqlConnector
{
public class UtilMethods
{
internal static DateTime GetMinDate(ConnectionConfig currentConnectionConfig)
{
if (currentConnectionConfig.MoreSettings == null)
{
return Convert.ToDateTime("1900-01-01");
}
else if (currentConnectionConfig.MoreSettings.DbMinDate == null)
{
return Convert.ToDateTime("1900-01-01");
}
else
{
return currentConnectionConfig.MoreSettings.DbMinDate.Value;
}
}
internal static DateTime ConvertFromDateTimeOffset(DateTimeOffset dateTime)
{
if (dateTime.Offset.Equals(TimeSpan.Zero))