Skip to content

Commit 648178b

Browse files
committed
Implements GetDataTypeName, GetEnumerator and GetValues in DbfDataReader
1 parent 38bdef9 commit 648178b

File tree

2 files changed

+263
-146
lines changed

2 files changed

+263
-146
lines changed

src/DbfDataReader/DbfDataReader.cs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,12 @@ public override long GetChars(int ordinal, long dataOffset, char[] buffer, int b
116116

117117
public override string GetDataTypeName(int ordinal)
118118
{
119-
throw new NotImplementedException();
119+
if (ordinal >= DbfTable.Columns.Count)
120+
{
121+
throw new IndexOutOfRangeException();
122+
}
123+
var dbfColumn = DbfTable.Columns[ordinal];
124+
return dbfColumn.ColumnType.ToString();
120125
}
121126

122127
public override DateTime GetDateTime(int ordinal)
@@ -136,9 +141,9 @@ public override double GetDouble(int ordinal)
136141

137142
public override IEnumerator GetEnumerator()
138143
{
139-
throw new NotImplementedException();
144+
return new DbEnumerator(this, closeReader: false);
140145
}
141-
146+
142147
public override bool NextResult()
143148
{
144149
return false;
@@ -189,7 +194,11 @@ public override bool IsDBNull(int ordinal)
189194

190195
public override int GetValues(object[] values)
191196
{
192-
throw new NotImplementedException();
197+
for (var ordinal = 0; ordinal < FieldCount; ordinal++)
198+
{
199+
values[ordinal] = GetValue(ordinal);
200+
}
201+
return FieldCount;
193202
}
194203

195204
public override object GetValue(int ordinal)
@@ -269,7 +278,7 @@ public override DataTable GetSchemaTable()
269278
return GetSchemaTable(columnSchema);
270279
}
271280

272-
public static DataTable GetSchemaTable(ReadOnlyCollection<DbColumn> columnSchema)
281+
private static DataTable GetSchemaTable(ReadOnlyCollection<DbColumn> columnSchema)
273282
{
274283
var table = new DataTable("SchemaTable")
275284
{
@@ -302,7 +311,7 @@ public static DataTable GetSchemaTable(ReadOnlyCollection<DbColumn> columnSchema
302311
foreach (var column in columnSchema)
303312
{
304313
var row = table.NewRow();
305-
row[0] = column.ColumnName ?? dbNull;
314+
row[0] = column.ColumnName;
306315
row[1] = column.ColumnOrdinal ?? dbNull;
307316
row[2] = column.ColumnSize ?? dbNull;
308317
row[3] = column.NumericPrecision ?? dbNull;

0 commit comments

Comments
 (0)