Announcement

Collapse
No announcement yet.

Server/Datenbank/User/Kennwort überprüfen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Server/Datenbank/User/Kennwort überprüfen

    Hallo,

    ich habe folgendes Problem.
    Ich lasse über ein gesondertes Form die o.g. Informationen den Benutzer eingeben. Mein Programm speichert dieses in einer SQLConnection z.B.

    connection.ConnectionString = "Data Source=" + server + ";Initial Catalog=" + datenbank + ";Persist Security Info=True;User ID=" + user + ";Password=" + passwort;

    Jetzt kann es ja sein, dass der Benutzer einen falschen Server, Datenbank, seinen Namen oder Passwort falsch angegeben hat.

    Kann mir vielleicht jemand helfen, ich weiß nicht wie ich überprüfen soll, ob diese Angaben auch richtig getätigt wurden.

    Gruss Stefie

  • #2
    Du machst ein connection.open und packst es in einen try catch block. Gibts ne exception dann hat er wohl was falsch eingeben.

    Wär zumindest mein Vorschlag

    Comment


    • #3
      Den Gedanken hatte ich auch schon. Ich habe die Hoffnungs, dass man vielleicht einzelne Daten überprüfen kann, z.B. der User hat eine nicht existierende Datenbank eingegeben. Ich würde gern die Meldung für den User genauer haben, wo er seinen Fehler gemacht hat.

      Dann noch so nebenbei, weiß vielleicht jemand, wie man vorhandene Server und Datenbanken in eine ComboBox einlesen kann?

      Zur Info: Ich erzeuge meine Komponenten alle selbst, nicht über die ToolBo

      Comment


      • #4
        Den Gedanken hatte ich auch schon. Ich habe die Hoffnungs, dass man vielleicht einzelne Daten überprüfen kann, z.B. der User hat eine nicht existierende Datenbank eingegeben. Ich würde gern die Meldung für den User genauer haben, wo er seinen Fehler gemacht hat.

        Dann noch so nebenbei, weiß vielleicht jemand, wie man vorhandene Server und Datenbanken in eine ComboBox einlesen kann? Die Server natürlich zur Laufzeit (beim Aufruf des LogIn-Forms) und die Datenbank zum Event SelectItemChange

        Zur Info: Ich erzeuge meine Komponenten alle selbst, nicht über die ToolBo

        Comment


        • #5
          Hi,

          ich finde dein Vorgehen etwas unpraktisch (nicht böse gemeint). Hintergrund: Da jeder User mit seinem Namen sich als User an der Datenbank anmeldet, heißt dass das jeder Benutzer auch in der Datenbank angelegt werden muss. Bei 10 Nutzern mag das noch gehen. Doch bei 10 Kunden à 10 Nutzer sind das schon 100 Nutzer die du einrichten musst. Einfacher wäre es ein Super-User der in der Verbindung angegeben wird (z.B. bei MS SQL der User sa) und das Passwort verschlüsselt bei den Clients hinterlegen. Zur Laufzeit entschlüsseln und fertig. Benutzerverwaltung würde ich den eigenständig implementieren. Stichworte IPrincipal, IIdentity.

          Sollte es mal zu einer n-tier Technik (meist reicht 3-Tier aus) Anforderung kommen, hast du weniger Migrationsaufwand

          Comment


          • #6
            Hi,
            dank dir für die Hilfe, auch wenn ich ehrlich gesagt nur die Hälfte verstehe. Bin noch relativ neu in der Programmierung (mache grad eine Ausbildung). Vielleicht drücke ich mich ja auch falsch aus.
            Also es ist derzeit so, dass mein Programm auf bestehende Datenbanken (legal) unserer Firma zugreifen soll und einfach nur die typischen SQL-Anweisungen (Select / Insert / Delete / Insert) ausführen soll.
            Alle User existieren bereits auf der Datenbank. Damit habe ich also nichts weiter zu tun. Ich habe denke ich mal, vorerst eine akzeptable Lösung gerade gefunden:
            Hier ein Beispiel:

            public static string SqlConnection(string server, string datenbank, string user, string passwort)
            {
            StringBuilder errorMessages = new StringBuilder();
            connection.ConnectionString = "Data Source=" + server + ";Initial Catalog=" + datenbank + ";Persist Security Info=True;User ID=" + user + ";Password=" + passwort;

            try
            {
            connection.Open();
            }
            catch (SqlException ex)
            {
            if (ex.Errors[0].Number == 18456)
            MessageBox.Show("Benutzername oder Passwort nicht vorhanden");
            else if (ex.Errors[0].Number == 4060)
            MessageBox.Show("Datenbank nicht vorhanden");
            else if (ex.Errors[0].Number == 1231)
            MessageBox.Show("Server nicht vorhanden");
            else
            MessageBox.Show("Es ist ein Fehler aufgetreten."+"\n"+"Bitte wenden Sie sich an Ihren Systemadministrator");
            }

            return connection.ConnectionString;
            }

            Das einzige Problem, was ich jetzt noch habe, ist wenn mein LogIn-Form aufgerufen wird, dass ich die existierenden Server/Datenbanken in meine ComboBox einlesen kann, wie bereits schon erwähnt, Server zur Laufzeit und Datenbank nach den Event SelectItemChange

            Comment


            • #7
              Hi,

              es gibt im Sql-Server System Stored Procedures, die dir alle Datenbanken auf einem Server auslesen können.

              Allerdings musst du vorher schon Abfragen an die DB schicken können. Daher bräuchtest du ein Benutzerkonto was in der Datenbank immer existiert (User sa beim Sql-Server).

              Such mal in der Hilfe über Index nach sp_*. Mit sp fangen alle System Prozeduren an.

              Was ich zu n-tier-Technik meinte: Bei z.B. 3-tier hast du Clients, dann nen Application Server und nen Datenbank Server.

              Application Server und Datenbank Server können auf dem selben Rechner (Hardware) laufen. Bei 3 tier bzw. n-tier richtet der Client alle Anfragen an den Application Server und keine direkt an die Datenbank. Nur der Application Server greift auf den Datenbank Server zu. Daher meine Aussage, das man bei n-tier nur ein Benutzer für die Datenbank braucht. Bei n-tier läuft die Anmeldung beim Sql-Server meistens über Windows-Authentication und nicht wie bei dir jetzt über den Mixed-Modus (Sql-Authentication)

              N-tier-Technik wird in deiner Ausbildung sicherlich noch kommen, von daher lass dich jetzt erstmal nicht von mir erschrecken

              Comment


              • #8
                Oh je...das hört sich ja alles hoch interessant an...

                Aber es hilft auf jeden Fall schon mal ein wenig weiter.
                Jetzt hab ich wieder ein paar neue Aufgaben mit denen ich mich beschäftigen kann, denn ehrlich gesagt, geht mir das in meiner Ausbildung ein wenig zu langsam vorran und deshalb such ich auch immer wieder neue Sachen mit denen ich mich beschäftigen kann.
                Ich glaub zwar, jetzt hab ich mir echt nicht das einfachste ausgesucht, aber ich bin mir sicher, das werde ich schon schaffen.
                Nochmals vielen Dank

                Comment

                Working...
                X