コード例 #1
0
ファイル: MySql.cs プロジェクト: xiaoyaoju/X
        /// <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);
        }
コード例 #2
0
ファイル: MySql.cs プロジェクト: xiaoyaoju/X
        /// <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));
        }