public StringBuilder Convert(StringBuilder stringBuilder, ISqlDataType dataType, object value) { if (!TryConvert(stringBuilder, dataType, value)) { stringBuilder.Append(value); } return(stringBuilder); }
public string Convert(ISqlDataType dataType, object value) { string convertedValue; if (!TryConvert(dataType, value, out convertedValue)) { convertedValue = value.ToString(); } return(convertedValue); }
public void SetDataType(Type type, ISqlDataType dataType) { if (_dataTypes == null) { lock (this) if (_dataTypes == null) { _dataTypes = new ConcurrentDictionary <Type, ISqlDataType>(); } } _dataTypes[type] = dataType; }
private static void ConvertDateTimeToSql(StringBuilder stringBuilder, ISqlDataType dataType, DateTime value) { var format = dataType.DataType == DataType.DateTime ? "TO_DATE('{0:yyyy-MM-dd HH:mm:ss}', 'YYYY-MM-DD HH24:MI:SS')" : "TO_TIMESTAMP('{0:yyyy-MM-dd HH:mm:ss.fffffff}', 'YYYY-MM-DD HH24:MI:SS.FF7')"; if (value.Millisecond == 0) { format = value.Hour == 0 && value.Minute == 0 && value.Second == 0 ? "TO_DATE('{0:yyyy-MM-dd}', 'YYYY-MM-DD')" : "TO_DATE('{0:yyyy-MM-dd HH:mm:ss}', 'YYYY-MM-DD HH24:MI:SS')"; } stringBuilder.AppendFormat(format, value); }
protected override void BuildDataType(ISqlDataType type) { switch (type.DataType) { case DataType.DateTime: StringBuilder.Append("timestamp"); break; case DataType.DateTime2: StringBuilder.Append("timestamp"); break; case DataType.UInt32: case DataType.Int64: StringBuilder.Append("Number(19)"); break; case DataType.SByte: case DataType.Byte: StringBuilder.Append("Number(3)"); break; case DataType.Money: StringBuilder.Append("Number(19,4)"); break; case DataType.SmallMoney: StringBuilder.Append("Number(10,4)"); break; case DataType.NVarChar: StringBuilder.Append("VarChar2"); if (type.Length > 0) { StringBuilder.Append('(').Append(type.Length).Append(')'); } break; default: base.BuildDataType(type); break; } }
public void SetDataType(Type type, ISqlDataType dataType) { _schemas[0].SetDataType(type, dataType); }
private static string GetDataTypeText(ISqlDataType type) { switch (type.DataType) { case DataType.DateTime: return("timestamp"); case DataType.DateTime2: return("timestamp"); case DataType.UInt32: case DataType.Int64: return("Number(19)"); case DataType.SByte: case DataType.Byte: return("Number(3)"); case DataType.Money: return("Number(19,4)"); case DataType.SmallMoney: return("Number(10,4)"); case DataType.NVarChar: return("VarChar2(" + (type.Length ?? 100) + ")"); case DataType.NChar: return("Char2(" + (type.Length ?? 100) + ")"); case DataType.Double: return("Float"); case DataType.Single: return("Real"); case DataType.UInt16: return("Int"); case DataType.UInt64: return("Decimal"); case DataType.Int16: return("SmallInt"); case DataType.Int32: return("Int"); case DataType.Boolean: return("Bit"); } var text = type.DataType.ToString(); if (type.Length > 0) { text += "(" + type.Length + ")"; } else if (type.Precision > 0) { text += "(" + type.Precision + "," + type.Scale + ")"; } return(text); }
protected override void BuildDataType(ISqlDataType type) { switch (type.DataType) { case DataType.Guid: StringBuilder.Append("VarChar"); break; case DataType.SByte: case DataType.Byte: StringBuilder.Append("SmallInt"); break; case DataType.Money: StringBuilder.Append("Decimal(19,4)"); break; case DataType.SmallMoney: StringBuilder.Append("Decimal(10,4)"); break; case DataType.DateTime2: case DataType.SmallDateTime: case DataType.DateTime: StringBuilder.Append("TimeStamp"); break; case DataType.Boolean: StringBuilder.Append("Boolean"); break; case DataType.Binary: case DataType.VarBinary: case DataType.Blob: case DataType.Image: StringBuilder.Append("Bytea"); break; case DataType.NVarChar: StringBuilder.Append("VarChar"); if (type.Length > 0) { StringBuilder.Append('(').Append(type.Length).Append(')'); } break; case DataType.Hierarchical: StringBuilder.Append("ltree"); break; case DataType.Undefined: if (type.Type == typeof(string)) { goto case DataType.NVarChar; } break; default: base.BuildDataType(type); break; } }
public bool TryConvert(StringBuilder stringBuilder, ISqlDataType dataType, object value) { if (value == null) { stringBuilder.Append("NULL"); return(true); } var type = value.GetType(); ConverterType converter = null; if (_converters.Count > 0 && !type.IsEnumEx()) { switch (type.GetTypeCodeEx()) { case TypeCode.DBNull: stringBuilder.Append("NULL"); return(true); case TypeCode.Boolean: converter = _booleanConverter; break; case TypeCode.Char: converter = _charConverter; break; case TypeCode.SByte: converter = _sByteConverter; break; case TypeCode.Byte: converter = _byteConverter; break; case TypeCode.Int16: converter = _int16Converter; break; case TypeCode.UInt16: converter = _uInt16Converter; break; case TypeCode.Int32: converter = _int32Converter; break; case TypeCode.UInt32: converter = _uInt32Converter; break; case TypeCode.Int64: converter = _int64Converter; break; case TypeCode.UInt64: converter = _uInt64Converter; break; case TypeCode.Single: converter = _singleConverter; break; case TypeCode.Double: converter = _doubleConverter; break; case TypeCode.Decimal: converter = _decimalConverter; break; case TypeCode.DateTime: converter = _dateTimeConverter; break; case TypeCode.String: converter = _stringConverter; break; default: _converters.TryGetValue(type, out converter); break; } } if (converter != null) { converter(stringBuilder, dataType, value); return(true); } if (_baseConverters.Length > 0) { foreach (var valueConverter in _baseConverters) { if (valueConverter.TryConvert(stringBuilder, dataType, value)) { return(true); } } } return(false); }