Ejemplo n.º 1
0
        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;
                }
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }