Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

MySQL Update / Where Problem

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von chenjung, 8 August 2016.

  1. chenjung

    chenjung Benutzer

    Hallo ihr lieben,

    ich habe zur Zeit ein Problem mit dem Update meiner Datenbank (Formular ist eine VB From welche Kundendaten aufnimmt und diese in meiner Datenbank speichert, was auch sehr gut geht) welche Änderungen einfach nicht übernimmt?

    Zuvor hatte ich das Problem, das bei dem Update, alle vorhanden Daten überschrieben wurden. Wie ich raus fand, lag das daran, da ich kein WHERE verwendet habe. Dies habe ich nun, heißt, die Daten werden nicht überschrieben, allerdings auch nicht abgeändert?

    Hier der Code:
    SQL = "UPDATE daten SET name='" & text_name.Text & "',an='" & text_an.Text & "',ort='" & text_ort.Text & "',plz='" & text_plz.Text & "',tele='" & text_tele.Text & "',mobil='" & text_mobil.Text & "',email='" & text_email.Text & "',geb='" & text_geb.Text & "',kfz='" & text_kfz.Text & "',marke='" & text_marke.Text & "',gestell='" & text_gestell.Text & "',bau='" & text_bau.Text & "',lass='" & Text_lass.Text & "'WHERE name = 'name'"

    Habt ihr vielleicht eine Idee, wo mein Fehler liegt? Ich wollte bei WHERE erst die id nutzen, dachte aber der Name sei besser?
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Ding Dong. Genau, mit WHERE schränkt man ein. Aber was ist mit dem Fragezeichen?


    Warum fragst Du uns das? Wir wissen doch nicht, nach welchen Kriterien Du Daten ändern willst. Vielleicht ja auch in Abhängigkeit der Körpertemperatur. Das ist Deine Entscheidung.

    Ist denn Dein SQL überhaupt syntaktisch korrekt?
     
  3. chenjung

    chenjung Benutzer

    Erst mal danke für deine Antwort :)

    Was meinst du mit dem Fragezeichen?

    Ich sollte wohl besser sagen, die id bleibt unverändert, daher habe ich den Namen gewählt. Aber, würde dies nicht bedeuten, ich müsste jedes Feld in WHERE eintragen, da ich ja jetzt noch nicht weiß, was ich ändern will bzw. muss? Oder reicht im WHERE nur ein Feld aus um danach auch alle anderen Daten zu ändern? (Wenn ich das Update-Problem gelöst habe!)

    Ist denn Dein SQL überhaupt syntaktisch korrekt?
    Davon gehe ich mal aus, zumindest was das abspeichern angeht / abrufen, das läuft ohne weitere Probleme. Nur das Thema Update macht mir Kopfzerbrechen.
     
  4. akretschmer

    akretschmer Datenbank-Guru

    "... welche Änderungen einfach nicht übernimmt?"
    und
    " ... Daten werden nicht überschrieben, allerdings auch nicht abgeändert?"

    Was passiert denn nun? Werden die Änderungen übernommen? Die Bedeutung des Fragezeichens im Allgemeinen ist Dir schon bekannt, oder?


    Das WHERE dient der eindeutigen Kennzeichnung der Datensätze, Deine Aussage bzw. Frage "Aber, würde dies nicht bedeuten, ich müsste jedes Feld in WHERE eintragen" ist Bullshit. Für solche Updates verwendet man in der Regel ein Where auf den Primary Key.
     
  5. chenjung

    chenjung Benutzer

    Nun, ich kann:
    - einen Datensatz erstellen (dieser wird in die DB geschrieben)
    - einen Datensatz laden und die Daten einsehen (sprich diese werden in die Textfelder geladen)

    Beim Versuch, die Aufgerufenen Daten jetzt zu ändern, geht nicht. Zwar erhalte ich die Meldung "Daten geändert" aber in der Datenbank tut sich nichts.

    PS: Ein Fragezeichen bezeichnet eine Frage? Ich denke eher, ich habe eben nicht ganz verstanden was du wolltest. Dachte dies bezog sich auf den Quelltext.
     
  6. akretschmer

    akretschmer Datenbank-Guru

    wer generiert diese Meldung, Deine Applikation oder die DB? Achtest Du auf das, was die DB Dir als Ergebniss des Befehles liefert? Was liefert sie?
     
  7. chenjung

    chenjung Benutzer

    Ich sehe gerade, die Meldung (mein VB Prorgamm erstellt diese Meldung) wird über die MSG Message von VB.NET ausgegeben. Für das Programm ist es wohl ein Erfolg, zeigt somit keine weitere Details an. Ausnahme würde hier eine Fehlermeldung machen, da hier der SQL Fehler ausgegeben würde.

    Code:
    Data.Close()
    MySql.Close()

    MsgBox("Die Daten wurden erfolgreich bearbeitet", vbInformation, "Erfolg")

    Catch ex As Exception
    MsgBox(ex.Message, vbCritical, "Fehler")
     
  8. akretschmer

    akretschmer Datenbank-Guru

    Tja. Sieht ja alles soweit gut aus. Wie viele Datensätze hast Du mit :

    Code:
    name = 'name'
    
     
    chenjung gefällt das.
  9. chenjung

    chenjung Benutzer

    Name ist in der gesamt Struktur nur einmal vorhanden und es ist zur Zeit auch nur ein Datensatz in der Datenbank.

    PS: Jetzt geht es !?!?! :confused:

    PPS: Danke für deine Geduld. Ich habe in der WHERE Abfrage Bezug auf die Listbox gemacht und siehe da, es geht ^^
     
    Zuletzt bearbeitet: 8 August 2016
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden