private void FetchTechList(FilterOptions filters) { MySqlCommand command = new MySqlCommand(); command.Connection = connection; command.CommandText = "SELECT id,name,category " + "FROM tech "; //Structure the filter command conditions int numFilters = 0; if (filters.idRangeActive || filters.categoryActive || filters.fieldNameActive || filters.nameStringMatchActive) { command.CommandText += "WHERE "; } if (filters.idRangeActive) { command.CommandText += "(id BETWEEN " + filters.idRangeMin + " AND " + filters.idRangeMax + ") "; numFilters++; } if (filters.categoryActive) { if (numFilters > 0) { command.CommandText += "AND "; } command.CommandText += "category='" + filters.category + "' "; numFilters++; } if (filters.fieldNameActive) { if (numFilters > 0) { command.CommandText += "AND "; } command.CommandText += "field_name LIKE '%" + filters.fieldName + "%' "; numFilters++; } if (filters.nameStringMatchActive) { if (numFilters > 0) { command.CommandText += "AND "; } command.CommandText += "name LIKE '%" + filters.nameString + "%' "; numFilters++; } command.CommandText += "ORDER BY id ASC;"; uint rowsFetched = 0; try { connection.Open(); TechListGrid.Rows.Clear(); MySqlDataReader reader = command.ExecuteReader(); string[] values = new string[3]; while (reader.Read()) { values[0] = HexConverter.IntToHex(reader.GetUInt32(0)); values[1] = reader.GetString(1); values[2] = reader.GetString(2); TechListGrid.Rows.Add(values); rowsFetched++; } } catch (MySqlException ex) { Log("An error occurred: " + ex.Message); } finally { connection.Close(); Log("Fetched " + rowsFetched + " records."); } }