return (int)OracleConvert.JdbcTypeToOracleType(jdbcType);
}\r
\r
+ protected override IReaderCacheContainer CreateReaderCacheContainer(int jdbcType, int columnIndex) {\r
+ switch ((JavaSqlTypes)jdbcType) {\r
+ case JavaSqlTypes.BINARY_FLOAT:\r
+ jdbcType = (int)JavaSqlTypes.REAL;\r
+ break;\r
+ case JavaSqlTypes.BINARY_DOUBLE:\r
+ jdbcType = (int)JavaSqlTypes.DOUBLE;\r
+ break;\r
+ case JavaSqlTypes.ROWID:\r
+ jdbcType = (int)JavaSqlTypes.VARCHAR;\r
+ break;\r
+// case JavaSqlTypes.CURSOR:\r
+// jdbcType = JavaSqlTypes.OTHER;\r
+// break;\r
+ case JavaSqlTypes.TIMESTAMPNS:\r
+ jdbcType = (int)JavaSqlTypes.TIMESTAMP;\r
+ break;\r
+ case JavaSqlTypes.TIMESTAMPTZ:\r
+ jdbcType = (int)JavaSqlTypes.TIMESTAMP;\r
+ break;\r
+ case JavaSqlTypes.TIMESTAMPLTZ: \r
+ jdbcType = (int)JavaSqlTypes.TIMESTAMP;\r
+ break;\r
+ case JavaSqlTypes.INTERVALYM:\r
+ jdbcType = (int)JavaSqlTypes.INTEGER;\r
+ break;\r
+ case JavaSqlTypes.INTERVALDS:\r
+ jdbcType = (int)JavaSqlTypes.TIMESTAMP;\r
+ break;\r
+ }\r
+ return base.CreateReaderCacheContainer (jdbcType, columnIndex);\r
+ }\r
+\r
+\r
+ protected override void SetSchemaType(DataRow schemaRow, ResultSetMetaData metaData, int columnIndex) {\r
+ JavaSqlTypes columnType = (JavaSqlTypes)metaData.getColumnType(columnIndex);\r
+ switch (columnType) {\r
+ case JavaSqlTypes.BINARY_FLOAT:\r
+ schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+ schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfFloat;\r
+ schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+ break;\r
+ case JavaSqlTypes.BINARY_DOUBLE:\r
+ schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+ schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfDouble;\r
+ schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+ break;\r
+ case JavaSqlTypes.ROWID:\r
+ schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+ schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfString;\r
+ schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+ break;\r
+ case JavaSqlTypes.CURSOR:\r
+ schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+ schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfDouble;\r
+ schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+ break;\r
+ case JavaSqlTypes.TIMESTAMPNS:\r
+ schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+ schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfTimespan;\r
+ schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+ break;\r
+ case JavaSqlTypes.TIMESTAMPTZ:\r
+ schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+ schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfTimespan;\r
+ schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+ break;\r
+ case JavaSqlTypes.TIMESTAMPLTZ: \r
+ schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+ schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfTimespan;\r
+ schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+ break;\r
+ case JavaSqlTypes.INTERVALYM:\r
+ schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+ schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfUInt32;\r
+ schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+ break;\r
+ case JavaSqlTypes.INTERVALDS:\r
+ schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);\r
+ schemaRow [(int)SCHEMA_TABLE.DataType] = OracleConvert.TypeOfTimespan;\r
+ schemaRow [(int)SCHEMA_TABLE.IsLong] = false;\r
+ break;\r
+ default:\r
+ base.SetSchemaType(schemaRow, metaData, columnIndex);\r
+ break;\r
+ }\r
+ }\r
+\r
+ public override decimal GetDecimal(int i) {\r
+ if (IsNumeric(i))\r
+ return GetDecimalSafe(i);\r
+\r
+ return base.GetDecimal(i);\r
+ }\r
+\r
+ public override double GetDouble(int i) {\r
+ if (IsNumeric(i))\r
+ return GetDoubleSafe(i);\r
+\r
+ return base.GetDouble(i);\r
+ }\r
+\r
+ public override float GetFloat(int i) {\r
+ if (IsNumeric(i))\r
+ return GetFloatSafe(i);\r
+\r
+ return base.GetFloat(i);\r
+ }\r
+//\r
+// OracleClient does not "excuse" for Int16\r
+//\r
+// public override short GetInt16(int i) {\r
+// if (IsNumeric(i))\r
+// return GetInt16Safe(i);\r
+//\r
+// return base.GetInt16(i);\r
+// }\r
+\r
+\r
+ public override int GetInt32(int i) {\r
+ if (IsNumeric(i))\r
+ return GetInt32Safe(i);\r
+\r
+ return base.GetInt32(i);\r
+ }\r
+\r
+ public override long GetInt64(int i) {\r
+ if (IsNumeric(i))\r
+ return GetInt64Safe(i);\r
+\r
+ return base.GetInt64(i);\r
+ }\r
+\r
+#if SUPPORT_ORACLE_TYPES\r
+ #region GetOracleXXX\r
+\r
+ public OracleBFile GetOracleBFile(\r
+ int i\r
+ ) {\r
+ throw new NotImplementedException();\r
+ }\r
+\r
+ public OracleBinary GetOracleBinary(\r
+ int i\r
+ ) {\r
+ throw new NotImplementedException();\r
+ }\r
+\r
+ public OracleDateTime GetOracleDateTime(\r
+ int i\r
+ ) {\r
+ throw new NotImplementedException();\r
+ }\r
+\r
+ public OracleLob GetOracleLob(\r
+ int i\r
+ ) {\r
+ throw new NotImplementedException();\r
+ }\r
+\r
+ public OracleMonthSpan GetOracleMonthSpan(\r
+ int i\r
+ ) {\r
+ throw new NotImplementedException();\r
+ }\r
+\r
+ public OracleNumber GetOracleNumber(\r
+ int i\r
+ ) {\r
+ throw new NotImplementedException();\r
+ }\r
+\r
+ public OracleString GetOracleString(\r
+ int i\r
+ ) {\r
+ throw new NotImplementedException();\r
+ }\r
+\r
+ public OracleTimeSpan GetOracleTimeSpan(\r
+ int i\r
+ ) {\r
+ throw new NotImplementedException();\r
+ }\r
+\r
+ public object GetOracleValue(\r
+ int i\r
+ ) {\r
+ throw new NotImplementedException();\r
+ }\r
+\r
+ public int GetOracleValues(\r
+ object[] values\r
+ ) {\r
+ throw new NotImplementedException();\r
+ }\r
+\r
+ #endregion\r
+#endif\r
+\r
#endregion // Methods\r
}\r
}
\ No newline at end of file