private bool ReadRows(DbDataReader rdr, DatabaseInserter inserter, DatabaseTable databaseTable, SqlWriter destinationSql) { if (!rdr.HasRows) { return(true); } int i = 0; while (rdr.Read() && i < _maxiumumRecords) { //we only do the first 1000 rows. This is for small databases only! i++; var result = CopyRow(databaseTable, destinationSql, rdr, inserter); //if there's a problem, stop doing anything if (!result) { LastErrorMessage = inserter.LastErrorMessage; return(false); } } Debug.WriteLine(databaseTable.Name + " copied " + i + " rows"); return(true); }
private static bool CopyRow(DatabaseTable databaseTable, SqlWriter destinationSql, DbDataReader rdr, DatabaseInserter inserter) { var dictionary = new Dictionary <string, object>(); if (rdr.FieldCount != databaseTable.Columns.Count) { //something has gone wrong return(false); } for (int index = 0; index < databaseTable.Columns.Count; index++) { var column = databaseTable.Columns[index]; var parameterName = destinationSql.ParameterName(column.Name); var value = rdr.GetValue(index); //we don't care about DBNull here dictionary.Add(parameterName, value); } return(inserter.Insert(dictionary)); }