Zum Inhalt springen

C# Access Datenbank auslesen


Empfohlene Beiträge

Geschrieben

Hey Leutz,

hab da ein kleines Problem...

möchte gerne eine Access Datenbank in der mehrere Benutzernamen und deren dazugehöriges Passwort stehen auslesen. Ich möchte in einer Form in der txtb_Benutzername und txtb_Pass stehen, diese mit einem btn_login in der Datenbank überprüfen. Außerdem wollte ich einen btn_register einfügen, der in der Datenbank einen neuen eintrag angibt.

danke im vorraus für die hilfe ;)

achso, hab übrigends den ganzen tag gegoogelt ;) entweder zu doof, oder es gibt wirklich nichts woraus ich als anfänger etwas schließen kann ;)

Geschrieben

naja,

ich muss dazusagen, das cih vor einer woche mit programmieren begonnen habe, also keinen wirklichen plan habe.

also ich wollte in einer access datenbank benutzername und pw angeben.

diese sollen dann bei der eingabe im loginfenster (textbox1 = benutzername; Textbox2 = Passwort; button 1 = Login) überprüft werden und bei vorhandensein, soll sich dann das fenster des eigentlichen programms öffnen.

bei nciht vorhandenen benutzerdaten, soll dann eine fehlermeldung erscheinen"Fehler! Sie haben keine Berechtigung!"

MfG

eiden1992

Geschrieben

Moin,

Löst man am Besten mit 2-3 Tabellen, mit denen Du die Benutzer und deren Passwort sowie deren Berechtigungen verwalten kannst. Möglich wäre auch eine Art Rollensystem (Moderator, Normaler User, Gäste etc.).

Bei Start Deines Programmes solltest Du dann den Benutzernamen und das Passwort gegen die Datenbank abfragen. Die Access-DB solltest Du dann aber mit einem separaten Passwort schützen, da sonst jeder andere User die Daten lesen kann.

EDIT: Es geht auch mit weniger oder mehr als 3 Tabellen, je nachdem wie die entsprechende Lösung aussehen soll. :-)

Geschrieben

also ich würd dir empfehlen dir selber eine kleine Klasse zu schreiben für die DBConnection du lernst dabei etwas und es schadet nie sowas zu wissn weil vll musst mal java oda sonst was machen und die Vorgehnsweise ist fast immer gleich

Verwende am besten die OleDB-Klasse, hier ein kleines Beispiel.

C# mit MS Access Datenbank verbinden. C# Access

falls dus genau durchlesen willst...

System.Data.OleDb-Namespace ()

Geschrieben (bearbeitet)

Hallo,

da aller Anfang (besonders im Bereich ADO .Net) etwas schwer ist, hat es mir damals geholfen einfach Code zu sehen und diesen durchzuarbeiten.

Den Tipp mit der Auslagerung in Klassen würde ich auf jeden Fall noch umsetzen, dass macht es Dir später wesentlich einfacher Deinen Code zu warten und auch nach 2 Jahren noch zu verstehen.

Ich habe hier mal eine Konsolenanwendung die auf sehr einfache Weise die Accessdatei nach einem Benutzer mit korrektem Kennwort durchsucht.

Achte auf die USING-Direktive im Kopf die bindet den Namensraum OleDB ein.

Dazu solltest Du Dir unbedingt etwas Grundwissen aneignen, wie mein Vorgänger es auch schon gesagt hat.

Hier der Code (Als Konsolenanwendung :)):


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data;

using System.Data.OleDb;


namespace ReadAccess

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine(String.Format("Benutzer {0} Zugang gewähren: {1}", "Bill", GetAccessData("Bill", "Gates")));

            Console.ReadKey();

        }


        public static bool GetAccessData(string Benutzername, string Passwort)

        {

            Boolean zugriffErlauben = false;


            using (OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb"))

            {

                using (OleDbCommand command = new OleDbCommand("SELECT COUNT(*) FROM Benutzer WHERE benutzername=? AND passwort=?", con))

                {

                    command.Parameters.Add(new OleDbParameter("@p1", Benutzername));

                    command.Parameters.Add(new OleDbParameter("@p2", Passwort));


                    con.Open();

                    zugriffErlauben = Convert.ToInt32(command.ExecuteScalar()) > 0;

                    con.Close();

                }

            }

            return zugriffErlauben;

        }

    }

}

Viele Grüße

Thomas

Bearbeitet von .NETter
Geschrieben

Je detaillierter die Frage desto genauer kann man auch antworten. Selbst die Antwort auf die Frage aus dem zweiten Post gibt keine konkrete Problemstellung.

Solltest Du den oben aufgezeigten Code in eine Extra-Klasse auslagern, ist die Klasse an die Datenbank gebunden, für die sie geschrieben wurde.

Eventuell wäre es hier von Vorteil, die Klasse so zu erstellen, dass diese für jedes DBMS zu verwenden ist.

Dafür muss man z.B. den Provider und den ConnectionString, aber auch mögliche Parameter, von Außen mit übergeben können.


public Database(connectionString connectionString, string dataProvider)

{ 

   //

}

Hier sollte sich die DbProviderFactory aus dem Namensraum System.Data.Common anbieten.

Geschrieben (bearbeitet)

Naja, nachdem der halbe Code schon gepostet wurde, wo ist da der Lerneffekt ?

Es klang nicht so, dass der Themenersteller schon mal eigene Versuche gemacht hat :-O

Außerdem kann man nie früh genug mit "Clean-Code" beginnen ;-)

EDIT: Clean-Code = sauberer und vor allem wiederverwendbarer Code.

Bearbeitet von lbm1305
Geschrieben

auf jeden fall erstmal danke ;)

also ich muss sagen, da ich noch keinerlei erfahrung habe, ist es wohl wirklich hilfreich, wenn ich den mir quellcode zunächst durchlese und daraus schließenm kann wie es funktioniert...aschließend kann ich es ja dann allein verscuhen, wobei der code dann nur als hilfe diehnt, sonst würde ich mich doch selbst ********en und ich mlchte ja etwas lernen...

ich werde, wenn ich denn dann gleich mal zeit habe, die codes durcharbeiten und alles geben, um alles zu verstehen ...

MfG

eiden1992

Geschrieben
Naja, nachdem der halbe Code schon gepostet wurde, wo ist da der Lerneffekt ?

Es klang nicht so, dass der Themenersteller schon mal eigene Versuche gemacht hat :-O

Außerdem kann man nie früh genug mit "Clean-Code" beginnen ;-)

EDIT: Clean-Code = sauberer und vor allem wiederverwendbarer Code.

Ich hab dazu geschrieben Beispiel, damit er was hat woran er sich orientiern kann. Glaubst du man kann richtig gutn Clean-Code schreiben, wenn man nicht mal weiß was static, final, abstact, interface etc is/macht und von DesignPattern ned mal was gehört hat?

Soll nicht heißn das er dumm ist aber jeder fängt klein an und er soll doch erstmal die Connection zur DB erstelln können und dann sich gedanken über Optimierungen machen. Sicherlich kannst ihm Tips geben sollte er doch aber erst zum schluss machen also Clean-Code das erlernt er ja mit der Zeit und wenn man mal so schaut was manche hier posten Klassen/Methoden/Variablen etc die ä,ö, ü etc enthalten wird einem schlecht...

*merk dir: lass die ä ö ü weg und schreib sie aus in oe ue etc...

Geschrieben

Um sauberen Code zu schreiben, muss ich keine Ahnung von DesignPattern haben.

Warum überwerfen sich Anfänger gleich mit irgendwelchen Datenbankgeschichten? Vor allem wenn man sich noch nicht mal richtig auskennt (Klassen, Methoden, Properties, Modifizierer etc.)

Ich hatte zu Beginn mit dem "Hallo Welt" angefangen. :-/

Geschrieben

Warum überwerfen sich Anfänger gleich mit irgendwelchen Datenbankgeschichten? Vor allem wenn man sich noch nicht mal richtig auskennt (Klassen, Methoden, Properties, Modifizierer etc.)

gute frage nächste frage solltn wir vll in einem extra Thread bearbeitn diese frage :D

meine aussage war nicht anders als deine, er solls langsam angehn und erstmal die connection auf die reihe bringen bevor er was optimiern will wie du ihm geratn hast

Geschrieben
er solls langsam angehn und erstmal die connection auf die reihe bringen

Eben nicht. Erstmal sollte sich ein sollte ein Anfänger sich mit den Basic's befassen. Eine Optimierung / Strukturierung kann man aber auch dabei lernen. Je eher desto besser ;-)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...