Logowanie i problem z autoryzacją.

Logowanie i problem z autoryzacją.
Longdrive
  • Rejestracja:ponad 6 lat
  • Ostatnio:4 miesiące
  • Postów:21
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:

Kopiuj
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"

kzkzg
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 9 godzin
  • Postów:926
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.


Keep calm and blame frontend.
Tell your cat I said pspsps.
Longdrive
Access wziął się stąd iż firma w której pracuje nie zezwoli na korzystanie z możliwości baz SQL czy też cokolwiek z Oracle z której kożystają
M8
  • Rejestracja:około 14 lat
  • Ostatnio:3 miesiące
  • Postów:151
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.


GG: 28287812
Skype: marcinmn.s
Longdrive
Chciałbym móc edytować użytkowników, korzystać będzie około 200 pracowników
M8
Mając dane czy datagridview czy w jakiejś tablicy czy kolekcji w pamięci też możesz edytować dane użytkowników.
Longdrive
hmm.. masz rację lecz chyba sobie z tym nie poradzę
Longdrive
  • Rejestracja:ponad 6 lat
  • Ostatnio:4 miesiące
  • Postów:21
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

edytowany 3x, ostatnio: Longdrive
DY
  • Rejestracja:ponad 6 lat
  • Ostatnio:3 miesiące
  • Postów:75
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ć.

Longdrive
  • Rejestracja:ponad 6 lat
  • Ostatnio:4 miesiące
  • Postów:21
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] = ?)

edytowany 2x, ostatnio: Longdrive
DY
  • Rejestracja:ponad 6 lat
  • Ostatnio:3 miesiące
  • Postów:75
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.

edytowany 2x, ostatnio: Dyzma
Longdrive
  • Rejestracja:ponad 6 lat
  • Ostatnio:4 miesiące
  • Postów:21
0

Czy dobrze rozumiem coś w tym stylu:

Kopiuj
{
       con.Open(); 
       OleDbDataReader DB_Reader = Command.ExecuteReader(); 
       if(DB_Reader.HasRows)
       {
          DB_Reader.Read();
          textbox1.Text = DB_Reader.GetString("your_column_name");
       }
DY
  • Rejestracja:ponad 6 lat
  • Ostatnio:3 miesiące
  • Postów:75
0

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

Longdrive
  • Rejestracja:ponad 6 lat
  • Ostatnio:4 miesiące
  • Postów:21
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 ;)

edytowany 1x, ostatnio: Ktos
DY
  • Rejestracja:ponad 6 lat
  • Ostatnio:3 miesiące
  • Postów:75
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.