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' CASE WHEN is_nullable = 'YES'
THEN true ELSE false END AS `IsNullable`, THEN true ELSE false END AS `IsNullable`,
numeric_scale as Scale, numeric_scale as Scale,
numeric_scale as DecimalDigits numeric_scale as DecimalDigits,
LOCATE( 'unsigned',COLUMN_type ) >0 as IsUnsigned
FROM FROM
Information_schema.columns where TABLE_NAME='{0}' and TABLE_SCHEMA=(select database()) ORDER BY ordinal_position"; Information_schema.columns where TABLE_NAME='{0}' and TABLE_SCHEMA=(select database()) ORDER BY ordinal_position";
return sql; return sql;
@ -274,6 +275,23 @@ namespace SqlSugar.MySqlConnector
#endregion #endregion
#region Methods #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> /// <summary>
///by current connection string ///by current connection string
/// </summary> /// </summary>

View File

@ -8,7 +8,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace SqlSugar.MySqlConnector namespace SqlSugar.MySqlConnector
{ {
public class MySqlFastBuilder:FastBuilder,IFastBuilder public class MySqlFastBuilder:FastBuilder,IFastBuilder
@ -44,7 +44,7 @@ namespace SqlSugar.MySqlConnector
TableName = dt.TableName, TableName = dt.TableName,
Local = true, Local = true,
}; };
if (this.CharacterSet.HasValue()) if (this.CharacterSet.HasValue())
{ {
bulk.CharacterSet = this.CharacterSet; bulk.CharacterSet = this.CharacterSet;
} }
@ -58,7 +58,14 @@ namespace SqlSugar.MySqlConnector
} }
catch (MySqlException ex) 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 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"; var n = "N";
if (this.Context.CurrentConnectionConfig.MoreSettings != null && this.Context.CurrentConnectionConfig.MoreSettings.DisableNvarchar) if (this.Context.CurrentConnectionConfig.MoreSettings != null && this.Context.CurrentConnectionConfig.MoreSettings.DisableNvarchar)
@ -44,9 +45,9 @@ namespace SqlSugar.MySqlConnector
if (type == UtilConstants.DateType) if (type == UtilConstants.DateType)
{ {
var date = value.ObjToDate(); 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") + "'"; 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) 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 else
{ {
@ -102,6 +106,7 @@ namespace SqlSugar.MySqlConnector
if (isSingle) if (isSingle)
{ {
string columnParametersString = string.Join(",", this.DbColumnInfoList.Select(it => Builder.SqlParameterKeyWord + it.DbColumnName)); string columnParametersString = string.Join(",", this.DbColumnInfoList.Select(it => Builder.SqlParameterKeyWord + it.DbColumnName));
ActionMinDate();
return string.Format(SqlTemplate, GetTableNameString, columnsString, columnParametersString); return string.Format(SqlTemplate, GetTableNameString, columnsString, columnParametersString);
} }
else else
@ -115,7 +120,7 @@ namespace SqlSugar.MySqlConnector
foreach (var item in groupList) foreach (var item in groupList)
{ {
batchInsetrSql.Append("("); 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); batchInsetrSql.Append(insertColumns);
if (groupList.Last() == item) if (groupList.Last() == item)
{ {

View File

@ -59,7 +59,7 @@ namespace SqlSugar.MySqlConnector
{ {
updateTable.Append(SqlTemplateBatchUnion); 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; ++i;
} }
pageIndex++; pageIndex++;
@ -89,7 +89,8 @@ namespace SqlSugar.MySqlConnector
} }
return batchUpdateSql.ToString(); return batchUpdateSql.ToString();
} }
public override object FormatValue(object value) int i = 0;
public object FormatValue(object value,string name)
{ {
var n = "N"; var n = "N";
if (this.Context.CurrentConnectionConfig.MoreSettings != null&&this.Context.CurrentConnectionConfig.MoreSettings.DisableNvarchar) if (this.Context.CurrentConnectionConfig.MoreSettings != null&&this.Context.CurrentConnectionConfig.MoreSettings.DisableNvarchar)
@ -106,9 +107,9 @@ namespace SqlSugar.MySqlConnector
if (type == UtilConstants.DateType) if (type == UtilConstants.DateType)
{ {
var date = value.ObjToDate(); 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") + "'"; 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) 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 else
{ {

View File

@ -16,7 +16,21 @@ namespace SqlSugar.MySqlConnector
{ {
public class UtilMethods 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) internal static DateTime ConvertFromDateTimeOffset(DateTimeOffset dateTime)
{ {
if (dateTime.Offset.Equals(TimeSpan.Zero)) if (dateTime.Offset.Equals(TimeSpan.Zero))