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

0

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

 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

  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

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

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1