Ejemplo n.º 1
0
        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.");
            }
        }