System.Data.ProviderBase.AbstractDataReader.SetSchemaType C# (CSharp) Method

SetSchemaType() protected method

protected SetSchemaType ( DataRow schemaRow, ResultSetMetaData metaData, int columnIndex ) : void
schemaRow System.Data.DataRow
metaData ResultSetMetaData
columnIndex int
return void
		protected virtual void SetSchemaType(DataRow schemaRow, ResultSetMetaData metaData, int columnIndex) {
			DbConvert.JavaSqlTypes columnType = (DbConvert.JavaSqlTypes)metaData.getColumnType(columnIndex);

			switch (columnType) {
				case DbConvert.JavaSqlTypes.ARRAY: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = typeof (java.sql.Array);
					schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					break;
				}
				case DbConvert.JavaSqlTypes.BIGINT: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfInt64;
					schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					break;
				}
				case DbConvert.JavaSqlTypes.BINARY: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfByteArray;
					schemaRow [(int)SCHEMA_TABLE.IsLong] = true;
					break;
				}
				case DbConvert.JavaSqlTypes.BIT: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfBoolean;
					schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					break;
				}
				case DbConvert.JavaSqlTypes.BLOB: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfByteArray;
					schemaRow [(int)SCHEMA_TABLE.IsLong] = true;
					break;
				}
				case DbConvert.JavaSqlTypes.VARCHAR:
				case DbConvert.JavaSqlTypes.CHAR: {
					// FIXME : specific for Microsoft SQl Server driver
					if (String.CompareOrdinal(metaData.getColumnTypeName(columnIndex), "uniqueidentifier") == 0) {
						schemaRow [(int)SCHEMA_TABLE.ProviderType] = DbType.Guid;
						schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfGuid;
						schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					}
					else
					if (String.CompareOrdinal(metaData.getColumnTypeName(columnIndex), "sql_variant") == 0) {
						schemaRow [(int)SCHEMA_TABLE.ProviderType] = DbType.Object;
						schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfObject;
						schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					}
					else {
						schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
						schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfString;
						schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					}
					break;
				}
				case DbConvert.JavaSqlTypes.CLOB: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfString; // instead og .java.sql.Clob
					schemaRow [(int)SCHEMA_TABLE.IsLong] = true;
					break;
				}
				case DbConvert.JavaSqlTypes.DATE: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfDateTime;
					schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					break;
				}
					//                else if(DbConvert.JavaSqlTypes.DISTINCT)
					//                {
					//                    schemaRow ["ProviderType = (int)GetProviderType((int)columnType);
					//                    schemaRow ["DataType = typeof (?);
					//                    schemaRow ["IsLong = false;
					//                }
				case DbConvert.JavaSqlTypes.DOUBLE: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfDouble; // was typeof(float)
					schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					break;
				}
				case DbConvert.JavaSqlTypes.FLOAT: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfDouble;
					schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					break;
				}
				case DbConvert.JavaSqlTypes.REAL: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfFloat;
					schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					break;
				}
				case DbConvert.JavaSqlTypes.INTEGER: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfInt32;
					schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					break;
				}
				case DbConvert.JavaSqlTypes.JAVA_OBJECT: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfObject;
					schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					break;
				}
				case DbConvert.JavaSqlTypes.LONGVARBINARY: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfByteArray;
					schemaRow [(int)SCHEMA_TABLE.IsLong] = true;
					break;
				}
				case DbConvert.JavaSqlTypes.LONGVARCHAR: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfString;
					schemaRow [(int)SCHEMA_TABLE.IsLong] = true;
					break;
				}
				case DbConvert.JavaSqlTypes.DECIMAL:
				case DbConvert.JavaSqlTypes.NUMERIC: {
					int scale = ResultsMetaData.getScale(columnIndex);
					if (scale == -127) {
						schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
						schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfDouble;
						schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					}
					else {
						schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
						schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfDecimal;
						schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					}
					break;
				}
				case DbConvert.JavaSqlTypes.REF: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = typeof (java.sql.Ref);
					schemaRow [(int)SCHEMA_TABLE.IsLong] = true;
					break;
				}
				case DbConvert.JavaSqlTypes.SMALLINT: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfInt16;
					schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					break;
				}
				case DbConvert.JavaSqlTypes.STRUCT: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = typeof (java.sql.Struct);
					schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					break;
				}
				case DbConvert.JavaSqlTypes.TIME: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfTimespan;
					schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					break;
				}
				case DbConvert.JavaSqlTypes.TIMESTAMP: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfDateTime;
					schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					break;
				}
				case DbConvert.JavaSqlTypes.TINYINT: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfByte;
					schemaRow [(int)SCHEMA_TABLE.IsLong] = false;
					break;
				}
				case DbConvert.JavaSqlTypes.VARBINARY: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = GetProviderType((int)columnType);
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfByteArray;
					schemaRow [(int)SCHEMA_TABLE.IsLong] = true;
					break;
				}
				default: {
					schemaRow [(int)SCHEMA_TABLE.ProviderType] = DbType.Object;
					schemaRow [(int)SCHEMA_TABLE.DataType] = DbTypes.TypeOfObject;
					schemaRow [(int)SCHEMA_TABLE.IsLong] = true;
					break;
				}
			}
		}