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);
        }