Announcement

Collapse
No announcement yet.

SQL- Abfrage Bedingungen hinzufügen?

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

  • SQL- Abfrage Bedingungen hinzufügen?

    Hey,

    ich habe grad ein Problem mit meiner Abfrage.
    Die sieht derzeit so aus:


    Code:
    string Suche, Vor_Nachname_suche;
    
    Suche = "select * from Eintrag";
    
    Vor_Nachname_suche = " where Vorname like '%" +
                                      textBox_Vorname.Text + "%'"  +
                                      " and Nachname like '%" +
                                      textBox_Nachname.Text + "%'";
    
    naja, wenn dann nach dem Vor- und Nachnamen gesucht werden soll, dann soll halt das hier gemacht werden:
    
    if (textBox_Vorname.Text != "" && textBox_Nachname.Text != "")
    {
         cmd_sql.CommandText += Suche + Vor_Nachname_suche
    }
    naja, ich habe davor noch eine Abfrage, die überprüft ob nur der Vorname eingegeben wurde und die funktioniert auch, nur die halt nicht, wo liegt der Fehler?
    Das kriege ich immer als Fehler:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*from Eintrag where Vorname like '%Eingabe%' and Nachname like '%Eingabe2%" at line 1.
    Nur ich sehe da keinen Fehler ...

  • #2
    Wenn die Fehlermeldung genau so ist wie gepostet so fehlt dir ein Leerzeichen zwischen "*" und "from"

    Comment


    • #3
      Naja, ich kriege immer noch eine Fehlermeldung, habe das ganze jetzt so umgebaut:
      Code:
      Suche = "select * from Eintrag ";
      
      Vor_Nachname_suche = "where Vorname like '%" +
                                        textBox_Vorname.Text + "%'" +
                                        " and Nachname like '%" +
                                        textBox_Nachname.Text + "%'";
      Jetzt kriege ich diese Fehlermeldung:
      ... to use near 'select * from Eintrag where Vorname like '%Eingabe%' and Nachname like '%Eingabe2%" at line 1

      Habe die Fehlermeldung genau richtig abgetippt. habe auch extra auf " und ' geachtet.

      Comment


      • #4
        cmd_sql.CommandText += Suche + Vor_Nachname_suche
        Warum += ? Die rechte Seite ist in sich (bzw. sollte) schon ein gültiges SQL. Keine Notwendigkeit zum anhängen.

        Habe die Fehlermeldung genau richtig abgetippt
        Was für eine merkwürdige IDE benutzt du wo du nicht mal Fehler oder Variableninhalte herauskopieren kannst? Wenn es knallt kopiere den Inhalt von cmd_sql.CommandText und führe ihn in einem MySQL Frontend aus. Dann solltest du sehen was da syntaktisch falsch ist.

        Comment


        • #5
          Ich kann da auf Anhieb nichts fehlerhaftes sehen, also 2 Dinge, die ich machen würde:
          1) Die DB ist so nett und sagt Dir immerhin, in welcher Zeile der Fehler auftritt. Leider hast Du den gesamten SQL String in einer einzigen Zeile angelegt. Zerlege den SQL Befehl in mehrere Zeilen (also den SQL String per CRLF bzw chr(13), chr(10) ergänzen) und schauen, in welcher Zeile nun der Fehler ausgegeben wird. So kann man es eingrenzen.
          2) Lauten die eigentlichen Suchfeldwerte wirklich Eingabe und Eingabe2 oder hast Du das "der Anschaulichkeit halber" so eingetippt, statt es buchstäblich zu kopieren? Schreib hier das hin, was Du wirklich eingegeben hast. Oder stelle klar, dass es sich um die original Eingaben handelt. Anführungszeichen, diverse Sonderzeichen, Umlaute könnten ggf. auch zu dem Fehler führen.
          Falls Dein Testfall doch solche Zeichen verwendet, führe das Ganze zusätzlich mit "sicheren" Suchwerten, also US ASCI 7 Buchstaben durch, z.B. 'abc'

          Grundsätzlich:
          a) Wie Ralf Jansen schon sagt: Copy/Paste ist besonders an dieser Stelle Dein Freund. Jedes einzelne Zeichen kann den Fehler verursachen, (Ab)-Tippfehler nerven nur alle Beteiligten.
          b) Falls derartige Fehler auf Anhieb nicht lösbar sind, hilft auch die Angabe von Table Create Statement, vor allem Feldnamen, Spaltentypen, Index Createstatement, evtl. Indextyp.
          c) Vollständige Angabe des nicht funktionierenden Statements (statt nur das Fragment der DB Fehlermeldung)
          d) Nicht zu vergessen, -hast Du ja fast geliefert- die vollständige Fehlermeldung
          e) Für b, c, d gilt immer a)!
          f) Es gibt Programmierer, die am Maschinencode gleich sehen, ob ein Kreis oder eine Elipse gezeichnet wird, welcher Radius, usw..
          Ich gehöre nicht dazu. Mach es Deinen Helfern so einfach wie möglich, durch brauchbare Informationen!
          g) Das ist alles nicht ehrenrührig. Es geht letztlich um Reproduzierbarkeit.

          Falls Du aus welchen Gründen auch immer aus dem Programm Code / IDE keine Statements kopieren kannst, mach es zu Fuß.
          Tippe das Statement wie es "gemeint" ist notfalls in der Commandozeile ein und kopiere alles inkl. Fehlermeldung in die Frage. Verhält sich das handgestrickte Statement anders als der Code, weise in der Frage darauf hin.
          Besorge Dir die Create Statements ebenfalls aus der Datenbank selbst, nicht aus der Spezifikation, also halt das was wirklich da ist, nicht was Du denkst was da ist!
          Gruß, defo

          Comment

          Working...
          X