Pobieranie danych z bazy i zapis do zmiennej

0

Witam,
Mam dwa Textboxy( login, haslo) chcĘ zeby po wcisnieciu przycisku program odnajdywal w bazie danych(najlepiej Access, ale SQL tez moze byc) rekord z podanym loginem i sprawdzal czy podane haslo jest takie jak w bazie danych. Chodzi glownie o to zeby pobrac wynik polecenia "Select" np. SELECT imie FROM pracownicy WHERE nazwisko='kowalski'. pojawi sie tabela z jedna kolumna i jednym wierszem z wartoscia "jan" i ja chcĘ ta wartos zpisac do zmiennej.??

0

Może tak?

SqlConnection con = new SqlConnection("Server=(local); Database=baza; Integrated security=true;");
SqlCommand cmd = new SqlCommand("SELECT haslo FROM tabela WHERE nazwisko LIKE @nazw");
cmd.Parameters["nazw"] = TextBox1.Text;
cmd.Connection.Open();
string hasło = (string) cmd.ExecuteScalar();
cmd.Connection.Close();

Oczywiście to pewno bez sensu ze względów bezpieczeństwa, ale co tam.
0

Rzeczywiście bez sensu, ... więc po co pisać [???]

Hmm , tak się zastanawiam - czemu operator LIKE???

0
Deti napisał(a)

Rzeczywiście bez sensu, ... więc po co pisać [???]

To chyba robi to, o co chodziło autorowi. Jeśli nie, to pewno ktoś zaproponuje lepsze rozwiązanie.

Deti napisał(a)

Hmm , tak się zastanawiam - czemu operator LIKE???

Z przyzwyczajenia. Ale powinno być '='.

0
somekind napisał(a)

Może tak?

SqlCommand cmd = new SqlCommand("SELECT haslo FROM tabela WHERE nazwisko LIKE @nazw");

> Oczywiście to pewno bez sensu ze względów bezpieczeństwa, ale co tam.

Bezsensem jest zwracanie hasła do klienta...
Ja bym zrobił to tak:
<code class="c#">
SqlCommand cmd = new SqlCommand("SELECT nazwisko FROM tabela WHERE @nazwisko IN (nazwisko, email) AND haslo=@haslo");

Czym to się różni? Otóż tym, że nie SQL nie zwraca prawidłowego hasła... Więc w razie podsłuchiwania nie można winy zrzucić na SQL-a.
Poza tym druga poprawka, to (wiele serwisów daje już możliwość logowania się alo userem, albo e-mailem) sprawdza usera z dwoma polami z bazy...

pozdrawiaMM

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