eiden1992 Geschrieben 7. September 2010 Geschrieben 7. September 2010 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 Zitieren
2K1.INC Geschrieben 7. September 2010 Geschrieben 7. September 2010 hmm was genau willst du nun wissn wie du die Daten auslesn tust oder wie die abfrage wär oder wo is des problem ? Zitieren
eiden1992 Geschrieben 8. September 2010 Autor Geschrieben 8. September 2010 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 Zitieren
lbm1305 Geschrieben 8. September 2010 Geschrieben 8. September 2010 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. :-) Zitieren
eiden1992 Geschrieben 8. September 2010 Autor Geschrieben 8. September 2010 hey nungut, soweit war ich auch schon gekommen suche nur halt einen befehl, mit dem ich die DB auslesen und überprüfen kann :confused: Zitieren
2K1.INC Geschrieben 8. September 2010 Geschrieben 8. September 2010 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 () Zitieren
.NETter Geschrieben 8. September 2010 Geschrieben 8. September 2010 (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 8. September 2010 von .NETter Zitieren
lbm1305 Geschrieben 8. September 2010 Geschrieben 8. September 2010 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. Zitieren
2K1.INC Geschrieben 8. September 2010 Geschrieben 8. September 2010 meinst du nicht das jeder klein anfängt? ich finde mit OleDB ist er erstmal eine Zeitlang beschäftigt, daser versteht wie man überhaupt eine Verbindung zur DB aufbaut etc... Zitieren
lbm1305 Geschrieben 8. September 2010 Geschrieben 8. September 2010 (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 8. September 2010 von lbm1305 Zitieren
eiden1992 Geschrieben 8. September 2010 Autor Geschrieben 8. September 2010 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 Zitieren
2K1.INC Geschrieben 8. September 2010 Geschrieben 8. September 2010 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... Zitieren
lbm1305 Geschrieben 8. September 2010 Geschrieben 8. September 2010 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. :-/ Zitieren
2K1.INC Geschrieben 8. September 2010 Geschrieben 8. September 2010 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 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 Zitieren
lbm1305 Geschrieben 8. September 2010 Geschrieben 8. September 2010 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 ;-) Zitieren
Empfohlene Beiträge
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.