public SqlCeDataReaderHelper(SqlCeDataReader dataReader) { _dataReader = dataReader; var schemaTable = dataReader.GetSchemaTable(); if (schemaTable != null) { var schemaRows = schemaTable.Rows; var count = schemaRows.Count; _dataFieldReaders = new IDataFieldReader[count]; for (var i = 0; i < count; i++) { var schemaRow = FoundationDbColumnFactory.Create(schemaRows[i]); var sqlCeType = (SqlCeType)schemaRows[i][SchemaTableColumn.ProviderType]; var sqlDbType = sqlCeType.SqlDbType; IDataFieldReader dataFieldReader; switch (sqlDbType) { case SqlDbType.Decimal: dataFieldReader = new SqlDecimalFieldReader(dataReader, i); break; default: dataFieldReader = new DefaultDataFieldReader(dataReader, i); break; } _dataFieldReaders[i] = dataFieldReader; } } }
public MsiDataReaderHelper(MsiDataReader dataReader) { Assert.IsNotNull(dataReader); var view = dataReader.View; var index = 0; _dataFieldReaders = new IDataFieldReader[view.Columns.Count]; foreach (var column in view.Columns) { var dbType = (DbType)column.DBType; switch (dbType) { case DbType.Int16: case DbType.Int32: case DbType.String: _dataFieldReaders[index] = new DefaultDataFieldReader(dataReader, index); break; case DbType.Binary: _dataFieldReaders[index] = new StreamFieldDataReader(dataReader, index); break; default: break; } index++; } }
private static IDataFieldReader CreateDataFieldReader( IDataRecord dataRecord, DataRow schemaRow) { var sqLiteDataReader = (SQLiteDataReader)dataRecord; var columnOrdinal = (int)schemaRow["ColumnOrdinal"]; var dbType = (DbType)schemaRow[SchemaTableColumn.ProviderType]; IDataFieldReader dataFieldReader; switch (dbType) { case DbType.Decimal: dataFieldReader = new DecimalDataFieldReader(sqLiteDataReader, columnOrdinal); break; case DbType.Binary: dataFieldReader = new BinaryDataFieldReader(sqLiteDataReader, columnOrdinal); break; default: dataFieldReader = new DefaultDataFieldReader(sqLiteDataReader, columnOrdinal); break; // case DbType. //case "BLOB": // dataFieldReader = new BinaryDataFieldReader( dataRecord, columnOrdinal ); // break; //case "DECIMAL": // dataFieldReader = new DecimalDataFieldReader( sqLiteDataReader, columnOrdinal ); // break; //default: // dataFieldReader = new DefaultDataFieldReader( dataRecord, columnOrdinal ); // break; } return(dataFieldReader); }
private static IDataFieldReader CreateDataFieldReader(IDataRecord dataRecord, FoundationDbColumn dataColumnSchema) { var columnOrdinal = dataColumnSchema.ColumnOrdinal; var providerType = (SqlDbType)dataColumnSchema.ProviderType; IDataFieldReader dataFieldReader; switch (providerType) { case SqlDbType.BigInt: case SqlDbType.Bit: case SqlDbType.Udt: case SqlDbType.Int: case SqlDbType.SmallInt: case SqlDbType.TinyInt: case SqlDbType.UniqueIdentifier: case SqlDbType.Real: // dataFieldReader = new DefaultDataFieldReader(dataRecord, columnOrdinal); break; case SqlDbType.Float: // dataFieldReader = new DoubleFieldReader(dataRecord, columnOrdinal); break; case SqlDbType.Char: case SqlDbType.NChar: case SqlDbType.VarChar: case SqlDbType.NVarChar: case SqlDbType.Text: case SqlDbType.NText: var columnSize = dataColumnSchema.ColumnSize; if (columnSize <= SqlServerProvider.ShortStringSize) { dataFieldReader = new ShortStringFieldReader(dataRecord, columnOrdinal, providerType); } else { dataFieldReader = new LongStringFieldReader(dataRecord, columnOrdinal); } break; case SqlDbType.Binary: case SqlDbType.VarBinary: case SqlDbType.Image: case SqlDbType.Timestamp: dataFieldReader = new BinaryDataFieldReader(dataRecord, columnOrdinal); break; case SqlDbType.Decimal: dataFieldReader = new DefaultDataFieldReader(dataRecord, columnOrdinal); break; case SqlDbType.SmallDateTime: dataFieldReader = new SmallDateTimeDataFieldReader(dataRecord, columnOrdinal); break; case SqlDbType.Date: case SqlDbType.DateTime: case SqlDbType.DateTime2: dataFieldReader = new DateTimeDataFieldReader(dataRecord, columnOrdinal); break; case SqlDbType.DateTimeOffset: dataFieldReader = new DateTimeOffsetDataFieldReader(dataRecord, columnOrdinal); break; case SqlDbType.Time: dataFieldReader = new DefaultDataFieldReader(dataRecord, columnOrdinal); break; case SqlDbType.Money: dataFieldReader = new MoneyDataFieldReader(dataRecord, columnOrdinal); break; case SqlDbType.Variant: dataFieldReader = new VariantDataFieldReader(dataRecord, columnOrdinal); break; // case SqlDbType.Timestamp: // dataFieldReader = new TimeStampDataFieldReader(dataRecord,columnOrdinal); // break; case SqlDbType.Xml: dataFieldReader = new LongStringFieldReader(dataRecord, columnOrdinal); break; default: throw new Exception(); } return(dataFieldReader); }
static IDataFieldReader CreateDataFieldReader( IDataRecord dataRecord, DataRow schemaRow) { var oracleDataReader = (OracleDataReader)dataRecord; var columnOrdinal = (int)schemaRow["ColumnOrdinal"]; var providerType = (OracleDbType)schemaRow["ProviderType"]; IDataFieldReader dataFieldReader; switch (providerType) { case OracleDbType.Blob: case OracleDbType.Char: case OracleDbType.Byte: case OracleDbType.Double: case OracleDbType.Int16: case OracleDbType.Int32: case OracleDbType.Int64: case OracleDbType.Long: case OracleDbType.NVarchar2: case OracleDbType.Varchar2: case OracleDbType.IntervalDS: dataFieldReader = new DefaultDataFieldReader(dataRecord, columnOrdinal); break; case OracleDbType.TimeStamp: dataFieldReader = new OracleTimestampFieldReader(oracleDataReader, columnOrdinal); break; case OracleDbType.TimeStampTZ: dataFieldReader = new OracleTimestampTzFieldReader(oracleDataReader, columnOrdinal); break; case OracleDbType.TimeStampLTZ: dataFieldReader = new OracleTimestampLtzFieldReader(oracleDataReader, columnOrdinal); break; case OracleDbType.Clob: case OracleDbType.NClob: dataFieldReader = new LongStringFieldReader(dataRecord, columnOrdinal); break; case OracleDbType.Date: dataFieldReader = new DateTimeDataFieldReader(oracleDataReader, columnOrdinal); break; case OracleDbType.Decimal: dataFieldReader = new OracleNumberDataFieldReader(oracleDataReader, columnOrdinal); break; case OracleDbType.Single: dataFieldReader = new SingleFieldDataReader(dataRecord, columnOrdinal); break; case OracleDbType.Raw: dataFieldReader = new DefaultDataFieldReader(dataRecord, columnOrdinal); break; case OracleDbType.XmlType: dataFieldReader = new DefaultDataFieldReader(dataRecord, columnOrdinal); break; default: throw new Exception(); } return(dataFieldReader); }