C# -> MySql Select avg where combobox.text jest pusty

C# -> MySql Select avg where combobox.text jest pusty
Tharnog
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11
0

Sprawa wygląda tak mam jeden button liczący średnią w bazie danych
dopóki kod wyglądał tak

Kopiuj
 matrixBindingSource.DataSource = GetData("SELECT AVG(Ocena) AS 'Średnia z Ocen' FROM matrix;"; 

wszystko liczyło dobrze

ale chce dodać 3 comboboxy jako kryteria tej średniej
przykład z jednym combem

Kopiuj
  matrixBindingSource.DataSource = GetData("SELECT AVG(Ocena) AS 'Średnia z Ocen' FROM matrix WHERE Operator='"+comboBox1.Text+"';");

liczy też świetnie dla danego wyboru z comba, ale gdy combo jest puste ma liczyć średnią dla wszystkich operatorów a tego nie robi...

pytanie czy tędy droga a jeśli nie to proszę o pomoc

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
1

nie tedy droga, uzyj do polaczenia sie z baza chociazby Entitiy Framework (chodzi ogolnie o jakis ORM). Wiem, tez ze NHibarnate jest "na topie"

@DibbyDum i @somekind beda na czasie co bedzie najlepsze do uzycia

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
3

ORM można użyć, można nie używać. Jeśli jesteś początkujący, to może na początku się na to nie rzucaj, bo to spory kawał wiedzy. Ważniejsze jest użycie sparametryzowanych zapytań: http://csharp-station.com/Tutorial/AdoDotNet/Lesson06

Ogólnie warto sobie rozpisać na kartce, co chce się osiągnąć. Jak rozumiem u Ciebie problem jest taki:

  1. Jeżeli użytkownik niczego nie wybrał z dropdowna, to liczymy średnią z całej tabeli.
  2. Jeżeli użytkownik coś wybrał, to liczymy średnią z odfiltrowanej tabeli.

Czyli potrzebne Ci są dwie metody pobierające dane z bazy. Jedna nieprzyjmująca żadnych parametrów, druga przyjmująca jako parametr wybrany "operator". Wynik wywołania takiej metody przypiszesz później do matrixBindingSource.DataSource. Te metody wewnątrz mogą wołać wewnętrznie jedną metodę GetData, ale nie przyjmującą stringa z zapytaniem SQL, bo to niebezpieczne, ale obiekt MySqlCommand.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.