/// <summary> /// 将各数据库默认值格式化成标准值,将标准值还原成各数据库默认值 /// </summary> /// <param name="flag">[0:转成标准值],[1:转成各数据库值],[2:转成各数据库值并补充字符串前后缀]</param> /// <param name="sqlDbType">该列的值</param> /// <returns></returns> public static string FormatDefaultValue(DalType dalType, object value, int flag, SqlDbType sqlDbType) { string defaultValue = Convert.ToString(value).Trim().TrimEnd('\n');//oracle会自带\n结尾 if (dalType != DalType.Access) { defaultValue = defaultValue.Replace("GenGUID()", string.Empty); } if (defaultValue.Length == 0) { return(null); } int groupID = DataType.GetGroup(sqlDbType); if (flag == 0) { if (groupID == 2)//日期的标准值 { return(SqlValue.GetDate); } else if (groupID == 4) { return(SqlValue.Guid); } switch (dalType) { case DalType.MySql: //用转\' \",所以不用替换。 defaultValue = defaultValue.Replace("\\\"", "\"").Replace("\\\'", "\'"); break; case DalType.Access: case DalType.SQLite: defaultValue = defaultValue.Replace("\"\"", "≮"); break; default: defaultValue = defaultValue.Replace("''", "≯"); break; } switch (defaultValue.ToLower().Trim('(', ')')) { case "newid": case "guid": case "sys_guid": case "genguid": case "uuid": return(SqlValue.Guid); } } else { if (defaultValue == SqlValue.Guid) { switch (dalType) { case DalType.MsSql: case DalType.Oracle: case DalType.Sybase: return(SqlCompatible.FormatGUID(defaultValue, dalType)); default: return(""); } } } switch (dalType) { case DalType.Access: if (flag == 0) { if (defaultValue[0] == '"' && defaultValue[defaultValue.Length - 1] == '"') { defaultValue = defaultValue.Substring(1, defaultValue.Length - 2); } } else { defaultValue = defaultValue.Replace(SqlValue.GetDate, "Now()").Replace("\"", "\"\""); if (groupID == 0) { defaultValue = "\"" + defaultValue + "\""; } } break; case DalType.MsSql: case DalType.Sybase: if (flag == 0) { if (defaultValue.StartsWith("(") && defaultValue.EndsWith(")")) //避免 (newid()) 被去掉() { defaultValue = defaultValue.Substring(1, defaultValue.Length - 2); } defaultValue = defaultValue.Trim('N', '\''); //'(', ')', } else { defaultValue = defaultValue.Replace(SqlValue.GetDate, "getdate()").Replace("'", "''"); if (groupID == 0) { defaultValue = "(N'" + defaultValue + "')"; } } break; case DalType.Oracle: if (flag == 0) { defaultValue = defaultValue.Trim('\''); } else { defaultValue = defaultValue.Replace(SqlValue.GetDate, "sysdate").Replace("'", "''"); if (groupID == 0) { defaultValue = "'" + defaultValue + "'"; } } break; case DalType.MySql: if (flag == 0) { defaultValue = defaultValue.Replace("b'0", "0").Replace("b'1", "1").Trim(' ', '\''); } else { defaultValue = defaultValue.Replace(SqlValue.GetDate, "CURRENT_TIMESTAMP").Replace("'", "\\'").Replace("\"", "\\\""); if (groupID == 0) { defaultValue = "\"" + defaultValue + "\""; } } break; case DalType.SQLite: if (flag == 0) { defaultValue = defaultValue.Trim('"'); if (groupID > 0) //兼容一些不规范的写法。像数字型的加了引号 '0' { defaultValue = defaultValue.Trim('\''); } } else { defaultValue = defaultValue.Replace(SqlValue.GetDate, "CURRENT_TIMESTAMP").Replace("\"", "\"\""); if (groupID == 0) { defaultValue = "\"" + defaultValue + "\""; } } break; } if (flag == 0) { return(defaultValue.Replace("≮", "\"").Replace("≯", "'")); } return(defaultValue); }