public static DbType ToDbType(HsqlProviderType type) { switch (type) { case HsqlProviderType.Array: { return DbType.Object; } case HsqlProviderType.BigInt: { return DbType.Int64; } case HsqlProviderType.Binary: { return DbType.Binary; } case HsqlProviderType.Blob: { return DbType.Object; } case HsqlProviderType.Boolean: { return DbType.Boolean; } case HsqlProviderType.Char: { return DbType.StringFixedLength; } case HsqlProviderType.Clob: { return DbType.Object; } case HsqlProviderType.DataLink: { return DbType.Object; } case HsqlProviderType.Date: { return DbType.DateTime; } case HsqlProviderType.Decimal: { return DbType.Decimal; } case HsqlProviderType.Distinct: { return DbType.Object; } case HsqlProviderType.Double: { return DbType.Double; } case HsqlProviderType.Float: { return DbType.Double; } case HsqlProviderType.Integer: { return DbType.Int32; } case HsqlProviderType.JavaObject: { return DbType.Object; } case HsqlProviderType.LongVarBinary: { return DbType.Object; } case HsqlProviderType.LongVarChar: { return DbType.String; } case HsqlProviderType.Numeric: { return DbType.VarNumeric; } case HsqlProviderType.Object: { return DbType.Object; } case HsqlProviderType.Real: { return DbType.Single; } case HsqlProviderType.Ref: { return DbType.Object; } case HsqlProviderType.SmallInt: { return DbType.Int16; } case HsqlProviderType.Struct: { return DbType.Object; } case HsqlProviderType.Time: { return DbType.DateTime; } case HsqlProviderType.TimeStamp: { return DbType.DateTime2; } case HsqlProviderType.TinyInt: { return DbType.SByte; } case HsqlProviderType.VarBinary: { return DbType.Object; } case HsqlProviderType.VarChar: { return DbType.String; } case HsqlProviderType.Xml: { return DbType.Xml; } default: { return DbType.Object; } } }
/// <summary> /// Retrieves the default <see cref="System.Type"/> used /// to represent values of the given <c>HsqlProviderType</c>. /// </summary> /// <remarks> /// This is simply a convenience method that is equivalent to invoking /// <see cref="ToDataType(int)"/> upon the result of casting the given /// <c>HsqlProviderType</c> value to <c>int</c>. /// </remarks> /// <param name="dbType"> /// An HSQLDB-specifc data type code. /// </param> /// <returns> /// The default <c>System.Type</c> that the driver uses to /// expose values of the given SQL data type to client software. /// </returns> public static Type ToDataType(HsqlProviderType dbType) { return ToDataType((int)dbType); }
/// <summary> /// Gets the next token as a literal value of the requested /// SQL data type. /// </summary> /// <remarks> /// The <see cref="System.Type"/> of the returned object is /// value return by <see cref="HsqlConvert.ToProviderSpecificDataType(int)"/> /// when passed the <c>requestedDataType</c>, cast to an <c>int</c>. /// </remarks> /// <param name="requestedDataType"> /// The requested data type. /// </param> /// <returns> /// A literal value of the requested data type, /// as denoted by the next token. /// </returns> public object GetNextAsLiteralValue(HsqlProviderType requestedDataType) { ReadToken(); object value = LiteralValue; HsqlProviderType dataType = LiteralValueDataType; if (dataType != requestedDataType) { try { value = HsqlConvert.FromJava.ToObject(value, (int)requestedDataType); value = HsqlConvert.FromDotNet.ToObject(value, (int)requestedDataType); } catch (Exception) { throw Tokenizer.WrongDataType(dataType); } } return value; }
/// <summary> /// Retrieves the provider-specific (i.e. internal) CLR /// <c>System.Type</c> used to represent values of the /// given provider-specific SQL type. /// </summary> /// <param name="type">The provider specific SQL type</param> /// <returns> /// The corresponding provider specific CLR <c>System.Type</c> used /// to represent values of the given provider-specific SQL type. /// </returns> public static Type ToProviderSpecificDataType(HsqlProviderType type) { return HsqlConvert.ToProviderSpecificDataType((int)type); }
/// <summary> /// Retreives an <c>HsqlDataSourceException</c> indicating that /// the data type specified by the given code is incorrect. /// </summary> /// <param name="type">The data type code.</param> /// <returns>a new <c>HsqlDataSourceException</c>.</returns> public static HsqlDataSourceException WrongDataType(HsqlProviderType type) { HsqlException he = HsqlTrace.error(HsqlTrace.WRONG_DATA_TYPE, HsqlTypes.getTypeString((int)type)); return new HsqlDataSourceException(he); }