Logowanie i problem z autoryzacją.

0

Witam.
Stworzyłem program który wymaga odmiennych uprawnień dla użytkownika, w tym celu chciałbym aby z zapisanych danych w bazie access została pobrana wartość 'status' podczas wpisywania w **textBoxie ** nazwy uzytkownika. Szkopół dla mnie w tym że baza czyli dataGridView będzie niewidoczna "Visible = false;" na panelu logowania to też textBox który służy do wpisywania użytkownika, posiada również możliwość wyszukiwania konkretnej wartości a wygląda to mniej więcej tak:

private void tb_username_TextChanged(object sender, EventArgs e)
        {
            try
            {
                DataView DV = new DataView(databaseDataSet1.Users);
                DV.RowFilter = string.Format("username LIKE '%{0}%'", tb_username.Text);
                dataGridView1.DataSource = DV;

                if (tb_username.CanSelect || tb_username.CanFocus || tb_username.Text == "")
                {
                    usersBindingSource.Clear();
                    usersBindingSource.ResetCurrentItem();
                }
            }
            catch
            {

            }

Nie mam możliwości wybrania komórki, zaznaczenia SELECT ponieważ dataGridView jest nie widoczna.
Jak mam automatycznie uzyskać tą wartość po wierszu w którym również znajduje się "username"

0

Potrzebna ci ta bazą Access? Skąd pomysł żeby akurat jej użyć? Widać że zaczynasz, z czego się uczysz?

Po pierwsze - sugeruje jednak zmienić tę bazę. Sqlite, Postgres, nawet ta wbudowana w Visual Studio - SQL Express będą lepsze.
Po drugie - po dane powinieneś sięgnąć bezpośrednio do bazy a nie ładować ją do kontrolki i stamtąd wyłuskiwać.
Jak nie chcesz pisać zapytań SQL możesz użyć jakiegoś ORM'a np Entity Framework.
W końcu - nie powinieneś trzymać gołych haseł w bazie. Tematy które powinieneś poznać: hashowanie hasła, solenie hasła.

0

A zamiast do datagridview nie możesz załadować danych to tablicy w pamięci ? Mógłbyś w prosty sposób wyszukać właściwy wiersz i zwrócić go.

0

Poprzez DataGridView mam możliwość zmian hasła czy też statusu użytkownika.
Nie do końca jest aż taka potrzeba silnego hasła ponieważ nie ma w tym programie tajnych danych lecz takie których nie można od tak zmieniać choćby pomyłkowo. Autoryzowanie pozwoli mi na edycję przez osoby bardziej kumate.

Status : Admin - może edytować bazę danych
Operator - może tylko odczytywać
Sl - będzie mógł dodawać lecz nie usuwać danych

0

A dlaczego nie możesz zapytać bezpośrednio bazy, jak @kzkzg wyżej zasugerował?
To będzie najlepsze wyjście, jeśli nie chcesz nic zmieniać.

0
Dyzma napisał(a):

A dlaczego nie możesz zapytać bezpośrednio bazy, jak @kzkzg wyżej zasugerował?
To będzie najlepsze wyjście, jeśli nie chcesz nic zmieniać.

Longdrive napisał(a): Hmm.. nie bardzo wiem jak ma to wyglądać. Troszkę brakuje mi wiedzy.. uczę się

Moje zapytanie do bazy odnośnie pobrania użytkownika wygląda tak: SELECT Identyfikator, Imie, Nazwisko, Zdjecie, id, [password], status, username, Brygada, Hala FROM Users WHERE (username = ?) AND ([password] = ?)

0

Jedna z opcji: link
Będziesz musiał SQL'a poduczyć - podstaw. Na pewno Ci się ta wiedza przyda.
Generalnie google dużo wyrzuca jak zapytasz np. o "C# access database", ewentualnie dopisując "select query".

EDIT: Wrzuciłeś edycję jako cytat. Poczytaj jak napisać select'a. Jest masa przykładów, jak wpiszesz w/w propozycje w google.

0

Czy dobrze rozumiem coś w tym stylu:

{
       con.Open(); 
       OleDbDataReader DB_Reader = Command.ExecuteReader(); 
       if(DB_Reader.HasRows)
       {
          DB_Reader.Read();
          textbox1.Text = DB_Reader.GetString("your_column_name");
       }
0

Nie pytaj czy dobrze, tylko sprawdź czy działa. :D

0
Dyzma napisał(a):

Nie pytaj czy dobrze, tylko sprawdź czy działa. :D

Hehe. ok Dyzma dzięki wielkie jutro poduczę się SQL'a. Teraz uciekam bo jutro do pracy na 12h ;)

0

Spoko, powodzenia. Jak coś to pisz (tutaj w wątku).

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