public static List<BatchFileData> LoadAndCorrectData(string databasePath, DBAccessData accessData) { List<DBRecord> records = ReadDataBase(databasePath, accessData); return CombineRecordsWithSameFile(records); }
private static List<DBRecord> ReadDataBase(string databasePath, DBAccessData accessData) { string accessString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + databasePath; OleDbConnection connection = new OleDbConnection(accessString); connection.Open(); OleDbCommand accessCommand = new OleDbCommand(accessData.sql, connection); OleDbDataAdapter dataAdapter = new OleDbDataAdapter(accessCommand); connection.Close(); DataSet dataSet = new DataSet(); dataAdapter.Fill(dataSet, accessData.tableName); DataTable table = dataSet.Tables[accessData.tableName]; List<DBRecord> records = new List<DBRecord>(); if (!table.Columns.Contains(accessData.addressFieldName)) Console.WriteLine($"The table has no '{accessData.addressFieldName}' field."); if (!table.Columns.Contains(accessData.textFieldName)) Console.WriteLine($"The table has no '{accessData.textFieldName}' field."); if (!table.Columns.Contains(accessData.sortFieldName)) Console.WriteLine($"The table has no '{accessData.sortFieldName}' field."); foreach (DataRow row in table.Rows) { string address = ""; if (table.Columns.Contains(accessData.addressFieldName)) address = ExtractAddress(Convert.ToString(row[accessData.addressFieldName])); string text = ""; if (table.Columns.Contains(accessData.textFieldName)) text = Convert.ToString(row[accessData.textFieldName]); string sortElement = ""; if (table.Columns.Contains(accessData.sortFieldName)) sortElement = Convert.ToString(row[accessData.sortFieldName]); records.Add(new DBRecord(address, text, sortElement)); } return records; }