/// <summary>创建参数</summary> /// <param name="name">名称</param> /// <param name="value">值</param> /// <param name="field">字段</param> /// <returns></returns> public override IDataParameter CreateParameter(String name, Object value, IDataColumn field = null) { var dp = base.CreateParameter(name, value, field); var type = field?.DataType; if (type == null) { type = value?.GetType(); } // MySql的枚举要用 DbType.String if (type == typeof(Boolean)) { var v = value.ToBoolean(); if (field?.Table != null && EnumTables.Contains(field.Table.TableName)) { dp.DbType = DbType.String; dp.Value = value.ToBoolean() ? 'Y' : 'N'; } else { dp.DbType = DbType.Int16; dp.Value = v ? 1 : 0; } } return(dp); }
/// <summary>格式化数据为SQL数据</summary> /// <param name="field">字段</param> /// <param name="value">数值</param> /// <returns></returns> public override String FormatValue(IDataColumn field, Object value) { var code = System.Type.GetTypeCode(field.DataType); if (code == TypeCode.String) { if (value == null) { return(field.Nullable ? "null" : "''"); } return("'" + value.ToString() .Replace("\\", "\\\\")//反斜杠需要这样才能插入到数据库 .Replace("'", @"\'") + "'"); } else if (code == TypeCode.Boolean) { var v = value.ToBoolean(); if (field.Table != null && EnumTables.Contains(field.Table.TableName)) { return(v ? "'Y'" : "'N'"); } else { return(v ? "1" : "0"); } } return(base.FormatValue(field, value)); }