logowanie w oparciu o bazę, konstruktor

0

Witam, jadę właśnie 1szy raz z zakodowaniem logowania do aplikacji.

Stworzyłem sobie klasę "Login", w konstruktorze podaję PIN ( logowanie odbywać będzie się o podanie 4 cyfrowego kodu ), metoda UserLogin, w której wywołuję zapytanie "SELECT * FROM dbo.users WHERE user_pin = @userPin";

do obiektu sqlCommand dodaję parametr i tutaj pytanie w kodzie w komentarzu

 
            SqlCommand sqlQuery = new SqlCommand(sqlCommandText, DbConnection);
            sqlQuery.Parameters.Add("@userPin", System.Data.SqlDbType.VarChar);
            sqlQuery.Parameters["@userPin"].Value = ////// i tutaj jak ustawić wartość na wartość z formy -> podaję ją w konstruktorze

aha jak łatwo policzyć ile wierszy zwraca zapytanie?

0

zamiast
select aaa,bbb,ccc from ddd join eee on eee.fff = ddd.ggg + command.ExecuteReader (lub adapter itp..)
=>
select count(*) from ddd join eee on eee.fff = ddd.ggg + command.ExecuteScalar()

ewentualnie, jezeli chcesz i miec wyniki i znac liczbe, to z zapytania oryginalnego sciagnij wzyzstkie wyniki, zapisz do tablicy (w petli), List'y (w petli) albo DataTable/DataSet (np. zwyczajowo, jak w tutorialach, poprzez DataAdapter), i z nich wyciagnij ilosci danych (array.Length, list.Count, dataTable.Rows.Count, dataset.Tables["blabla"].Rows.Count etc.)

0

dokładnie tak.. chciałbym mieć i wyniki i ile wierszy -> wpakuję to do tablicy i zliczę tak jak podałeś :) dzięki.

Mam jeszcze pytanie, które przewija się w necie mianowicie o przekazywanie danych miedzy formami. Wiadomo, że mogę to zrobić np za pomocą properties, obiektów, konstruktora. Chcę zrobić coś takiego, że po zalogowaniu otwiera się nowe okno na cały ekran, W dolnym pasku ( też nie wiem jakim, co to za kontrolka ) chciałbym cały czas wyświetlać do jakiej jestem podłączony bazy oraz jaki user jest zalogowany. Chciałbym mieć dane z logowania dostępne cały czas jakąkolwiek formę nie otworzę ( chociażby po to by w zalężności od uprawnień zalogowanego wyświetlać mu pewne rzeczy bądź nie ). W PHP pakuję to sobie w sesję i mam wszędzie $_SESSION['zmienna'] i już. Jak mogę to osiągnąć w C#???

pozdrawiam

0

W forms nie ma czegoś takiego jak sesja, bo nie jest to potrzebne. Jak napisałeś musisz przekazać dane między oknami. Jak? Odpowiedzi jest wiele, jak wymieniłeś.
Jeśli okno ma za zadanie zebrać proste informacje, czy coś wyświetlić, powinno robić dokładnie to i nic więcej. Czyli przekazujesz mu odpowiednią porcję danych do realizacji zadania. Czy to będzie obiekt(-y) w konstruktorze czy przez właściwości twoja inwencja.
Teraz nauczę cię brzydkich nawyków. Jeśli aplikacja zawsze pracuje na jednym obiekcie można użyć singleton'a lub zmiennej statycznej. Ale jeśli nie jesteś świadom jak tego użyć, z czym się to wiąże, jakie są różnice, to nie używaj tego.
Kontrolka, o którą pytasz to StatusStrip.

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