Announcement

Collapse
No announcement yet.

SQL-Abfrage der Treffer funktioniert nicht richtig

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

  • SQL-Abfrage der Treffer funktioniert nicht richtig

    Hey,

    ich habe ein Problem mit einer Abfrage. Es soll, wenn die Größe der Funde größer 0 ist, die Abfrage ausgeführt werden aber es treffen immer beide Sachen zu, wie kann das sein?
    Ich finde den Fehler nicht ...
    Code:
    MySqlConnection con = new MySqlConnection();
    MySqlCommand cmd = new MySqlCommand();
    
    con.ConnectionString = select * from Eintrag;
    
    try
    {
        // Das übliche ..
        if(textBox_ID.Text == "")
        {
            MessageBox.Show("Bitte füllen Sie das Feld aus!", "Achtung!",
                            MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            return;
        }
        else { cmd.CommandText = loeschen_string1; }
    
        if(MessageBox.Show("Möchten Sie den Datensatz wirklich löschen?", "Nachfrage",
                            MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
        {
            Reset();
            return;
        }
        else
        {
            MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
            MySqlCommandBuilder bd = new MySqlCommandBuilder(adapter);
            DataSet ds = new DataSet();
            int anzahl = 0;
    
            con.Open();
            cmd.Connection = con;
            anzahl = adapter.Fill(ds, cmd.CommandText);
            if(anzahl == 0)
            {
                MessageBox.Show("Es wurde kein Datensatz gefunden, der ihren Eingaben entspricht!\n\n", "Fehler",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                MessageBox.Show("Der Datensatz wurde erfolgreich gelöscht", "Erfolgreich!",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
                con.Close();
    
                if(MessageBox.Show("Möchten Sie einen weiteren Datensatz löschen?", "Nachfrage",
                                    MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                {
                    Close();
                }
                else
                {
                    Reset();
                }
            }
        }                       
    }
    catch(Exception ex)
    {
        MessageBox.Show("Es ist ein Fehler aufgetreten!\n\n" + ex.Message, "Fehler",
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    Naja, so sieht das ganze ungefähr aus. Allerdings kommt immer der Fehler auf, der Datensatz wird trotzdem gelöscht, wie kann das sein? Ich dachte es kann immer nur eine Bedingung zutreffen?

    Danke schon einmal im vorraus.

  • #2
    Naja, so sieht das ganze ungefähr aus.
    Ahja, und weil es nur ungefähr so aussieht sollen wir jetzt raten?
    Was bedeutet ungefähr?
    Kennst du Copy & Paste zum einfügen von Code?
    Was verstehst du unter "es treffen beide zu"?
    Einmal ist es wohl "der Datensatz wird trotzdem gelöscht," und das zweite?
    Was sind funde? Die Anzahl?
    Wie kann ein String/Methode con.ConnectionString heißen und er hat ein select-Statement drin? (Man würde Zugriffsdaten erwarten)
    Warum ist dein Quelltext nicht einheitlich formatiert? (Klammer mal in extraZeile, mal direkt in den Zeilen, Einrückungen)
    Warum liegt ein Problem mit einer Abfrage vor, wenn offenbar der Programmablauf nicht stimmt?
    Wenn du einen Fehler in der Abfrage vermutest, warum postest du diese nicht?


    Ursache dürfte wohl sein, das eben anzahl != 0 ist (Wie lautet cmd.CommandText?)

    Des Weiteren hast du einen Debugger. Was zeigt dieser bei der schrittweisen Ausführung an

    Versuch es mal ungefähr danach:
    http://www.tty1.net/smart-questions_de.html
    Zuletzt editiert von Christian Marquardt; 31.12.2013, 15:45. Reason: Rechtschreibung
    Christian

    Comment


    • #3
      Naja, die Ursache war, das ich den adapter mit einem delete Befehl gefüllt habe und der hat dann wohl auch immer direkt den Datensatz gelöscht.
      Das Problem war dann immer, das irgendwie die if und die else Anweisung ausgeführt wurden, das meinte ich damit.
      Was meinstdu damit, das mein Quellcode nicht einheitlich formatiert ist? Ist er doch oder? Sehe da jetzt keine Fehler drin.
      Trotzdem danke
      Zuletzt editiert von Threin; 01.01.2014, 03:28.

      Comment


      • #4
        Was meinstdu damit, das mein Quellcode nicht einheitlich formatiert ist? Ist er doch oder? Sehe da jetzt keine Fehler drin.

        if(anzahl == 0)
        {
        MessageBox.Show("Es wurde kein Datensatz gefunden, der ihren Eingaben entspricht!\n\n", "Fehler",
        MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        zu

        else { cmd.CommandText = loeschen_string1; }
        Da sehe ich schon Unterschiede
        Christian

        Comment


        • #5
          Hmm, stimmt.
          Ich bin mir nicht sicher, was besser ist.
          Vor allem wenn in der else Anweisung nur eine Anweisung ist, dann mache ich das oft so.
          Wenn mehrere Anweisungen da sind, dann schreibe ich das immer untereinander.

          Bin mir nicht sicher, ob das jetzt gut oder schlecht ist.

          Comment


          • #6
            Wenn irgendeinanderer den Code prüfen soll, "weil ja ein if-else nicht funktioniert" ist es schlecht
            Christian

            Comment

            Working...
            X