mam problem z odczytaniem wartości z bazy danych i dziwne jest to, że mam w kodzie dwa razy taką operację, gdzie jedna operacja taka działa dobrze, a druga zrobiona identycznie zwraca błąd.
MySql.Data.MySqlClient.MySqlException: „Unknown column ‘value’ in ‘where clause’”
Nawet jak zmienie z Execiute Scalar na Execute Reader i pobieram wartość readerem występuje ten sam błąd tak jakby zamiast porównywać tabelę ze zmienną to on zmienną traktuje jako kolumnę, a w działającym kodzie nie wiem w takim razie dlaczego to działa
Pierwszy przypadek też nie działa, a to, że nie wywala błędów to tylko czysty przypadek . Po prostu w pierwszym przypadku masz: SELECT COUNT(*) FROM users WHERE Login = login
gdzie Login to jest kolumna typu varchar - czyli string i jej wartości porównujesz ze stringiem login więc wszystko jest ok, ale nie ma to mniejszego, a tym bardziej większego sensu z punktu logiki.
Natomiast drugie zapytanie: SELECT RentalNumber FROM rentalofrooms WHERE RentalNumber = value
porównujesz inta ze stringiem więc serwer próbuje go dopasować do nazwy jakiejś kolumny która może ma wartości typu int.
Kolumna RentalNumber jest typu int tak samo jak zmienna value, więc typ danych się zgadzą, porównuję inta z intem. Więc wychodzi na to, że program szuka w bazie kolumny o nazwie value?
Spytam inaczej, gdzie w tej inicjalizacji stringa: string query = "SELECT RentalNumber FROM rentalofrooms WHERE RentalNumber = value";
masz porównanie z wartością typu int? Ja tu widzę porównanie tylko ze stringiem.
Drugie zapytanie nie ma sensu z tego samego powodu, inicjalizacja stringa z zapytaniem wygląda tak: string query = "SELECT COUNT(*) FROM users WHERE Login = login";
Czemu zawsze sprawdzasz ten sam login?
Tym zapytaniem szukam w bazie czy istnieje login jeśli istnieje to pobieram hasło i je porównuje. Nie bardzo znam się na bazach danych dlatego pewnie to jest nieefektywne.
Sądziłem, że porównując ze zmienna intową jest poprawnie. Jak można to zrobić ze zmienną intową?
No okej, zawsze szukam login, dziwne, że jak w polu wpiszę np uzytkownik lub root lub admin i stworze konto to działa, wiec to nie może szukać tylko frazy login