public void Should_get_typed_values() { using (var dbfDataReader = new DbfDataReader(FixturePath)) { var columns = dbfDataReader.GetColumnSchema(); columns.Count.ShouldBe(31); for (var i = 0; i < dbfDataReader.FieldCount; i++) { if (dbfDataReader.IsDBNull(i)) { var value = dbfDataReader.GetValue(i); value.ShouldBeNull(); continue; } var fieldType = dbfDataReader.GetFieldType(i); var typeCode = Type.GetTypeCode(fieldType); switch (typeCode) { case TypeCode.Boolean: dbfDataReader.GetBoolean(i); break; case TypeCode.Int32: dbfDataReader.GetInt32(i); break; case TypeCode.DateTime: dbfDataReader.GetDateTime(i); break; case TypeCode.Single: dbfDataReader.GetFloat(i); break; case TypeCode.Double: dbfDataReader.GetDouble(i); break; case TypeCode.Decimal: dbfDataReader.GetDecimal(i); break; case TypeCode.String: dbfDataReader.GetString(i); break; default: // no cheating throw new NotSupportedException($"Unsupported field type: {fieldType} for column at index: {i}"); } } } }
public void DbfDataReader() { using (var dbfDataReader = new DbfDataReader(FixturePath)) { var cols = dbfDataReader.GetColumnSchema(); var allowDbNull = cols.Select(c => c.AllowDBNull != false).ToArray(); while (dbfDataReader.Read()) { for (var ordinal = 0; ordinal < dbfDataReader.FieldCount; ordinal++) { if (allowDbNull[ordinal] && dbfDataReader.IsDBNull(ordinal)) { continue; } dbfDataReader.ReadField(ordinal); } } } }