Problem mit MySQL "INSERT INTO"!

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Acr0most.

    Problem mit MySQL "INSERT INTO"!

    Guten Tag liebe VB-Paradise Community,
    Ich komme am besten direkt zum Punkt. Ich habe seid ca. 2 Tagen ein riesen Problem.
    Und zwar möchte ich in eine Datenbank ein paar Daten schreiben(soweit kein Problem), es hatte auch alle funktioniert... Als ich dann allerdings eine halbe Stunde später es noch einmal versucht habe ging es nicht mehr, ohne irgendwelche (zumindest in meiner Erinnerung) Änderungen. Jetzt kommt wenn ich

    VB.NET-Quellcode

    1. MySql.Data.MySqlClient.MySqlException
    abfrage nur noch Eine leere Nachricht(ohne Inhalt).

    Mein Code sieht so aus(Recht und alles sind alle korrekt weil abfragen kann ich, und schreiben ging auch. Außerdem habe ich es gerade noch einmal überprüft.):

    VB.NET-Quellcode

    1. MysqlConn = New MySqlConnection
    2. MysqlConn.ConnectionString =
    3. "Server=********.de;Database=life_polizei_gesucht;Uid=root;Pwd=*****"
    4. Dim READER As MySqlDataReader
    5. Try
    6. MysqlConn.Close()
    7. MysqlConn.Open()
    8. Dim Query As String
    9. Query = "INSERT INTO life_polizei_gesucht.vergehen (steamid,Gesetzesbruch) values ('" & steamid_TXT.Text & "','" & gesetz_TXT.Text & "')"
    10. COMMAND = New MySqlCommand(Query, MysqlConn)
    11. COMMAND.ExecuteNonQuery()
    12. READER = Command.ExecuteReader
    13. MessageBox.Show("Data Saved")
    14. MysqlConn.Close()
    15. Catch ex As MySql.Data.MySqlClient.MySqlException
    16. MessageBox.Show(ex.Message)
    17. Finally
    18. MysqlConn.Dispose()
    19. End Try


    Es ist einer von Vielen Codes die ich aus probiert habe, aber bei allen das gleiche!

    Danke im Voraus! L.G.: MaLeTut

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „MaLeTut“ ()

    1. Du solltest das Passwort entfernen/ändern
    2. Setz ein Breakpoint und gehe Step-by-Step durch und schau wo der Fehler auftritt
    3. Schau dir ex wärend dem debuggen an (sofern die Zeile erreicht wird)

    Evtl.
    4. Der Name der Database enthält evtl. ein Steuerzeichen:

    Quellcode

    1. 6C 69 66 65 5F -> 1F <- 70 6F 6C 69 7A 65 69 5F 76 65 72 67 65 68 65 6E
    2. life_ -> . <- polizei_vergehen
    Das

    VB.NET-Quellcode

    1. READER = Command.ExecuteReader


    Macht keinen Sinn. ExecuteReader verwendet man um ein Select zurück zu bekommen. Direkt darüber führst du den Command ja auch schon aus mit COMMAND.ExecuteNonQuery()
    Das ist meine Signatur und sie wird wunderbar sein!

    Antwort auf die Antwort von slice

    1. Ja verdammt vergessen :S
    2. Ich habe leider keine Ahnung wie Breakpints funktionieren, also ich weis wie man sie einfügt, aber wie diese verwendet werden nicht.
    3. Die Ausgabe spuckt nur das aus:

    VB.NET-Quellcode

    1. Ausnahme ausgelöst: "MySql.Data.MySqlClient.MySqlException" in MySql.Data.dll


    4. Wenn ich das richtig verstanden hab ist das nicht der Fall, ich habe in Namen immer nur Buchtaben, '_' und '-'-e.

    L.G. MaLeTut

    Ach und Mono, stimmt bin heute ein wenig neben der Spur, löst allerdings auch nicht mein Problem. :/
    Werde ich sofort machen! :)

    ....

    Ok bei dem

    VB.NET-Quellcode

    1. COMMAND.ExecuteNonQuery()


    sagt er mir folgendes:
    MySql.Data.MySqlClient.MySqlException ist aufgetreten.
    HResult=0x80004005
    Quelle = MySql.Data
    Stapelüberwachung:
    bei MySql.Data.MySqlClient.MySqlStream.ReadPacket()
    bei MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
    bei MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId)
    bei MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
    bei MySql.Data.MySqlClient.MySqlDataReader.NextResult()
    bei MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
    bei MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
    bei LIFE_Polizei_Computer.Neuer_Gesetzesbruch.ButtonX1_Click(Object sender, EventArgs e) in D:\1.1 Workflow\1 - Programme\LIFE Polizei Computer\LIFE Polizei Computer\Neuer Gesetzesbruch.vb: Zeile27
    bei System.Windows.Forms.Control.OnClick(EventArgs e)
    bei DevComponents.DotNetBar.ButtonX.OnClick(EventArgs e)
    bei DevComponents.DotNetBar.ButtonX.OnMouseUp(MouseEventArgs e)
    bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    bei System.Windows.Forms.Control.WndProc(Message& m)
    bei DevComponents.DotNetBar.PopupItemControl.WndProc(Message& m)
    bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    bei LIFE_Polizei_Computer.My.MyApplication.Main(String[] Args) in : Zeile81
    Deine Fehlermeldung ist leider nicht aussagekräftig.
    Es wäre noch möglich das die Verbindung bereits in deinem Programm verwendet wird. Ist der Reader vll mit der Verbindung connected?
    Das ist meine Signatur und sie wird wunderbar sein!
    Puh... Ich habe es gefunden, wie gesagt bin heute leicht daneben! :D Ich wollte einen Betrag einfügen der schon existiert... Das war auch der Grund dafür dass es erst geklappt hat, und dann nicht mehr. *Facepalm*! Ich konnte es so lösen, dass ich aus:

    VB.NET-Quellcode

    1. Query = "INSERT INTO life_polizei_gesucht.vergehen (steamid,Gesetzesbruch) values ('" & steamid_TXT.Text & "','" & gesetz_TXT.Text & "')"

    , ein:

    VB.NET-Quellcode

    1. Query = "INSERT IGNORE INTO life_polizei_gesucht.vergehen (steamid,Gesetzesbruch) values ('" & steamid_TXT.Text & "','" & gesetz_TXT.Text & "')"

    gemacht habe! Danke an alle für die tolle hilfe! Credits an euch!

    L.G. MaLeTut
    Bin kein mysql Experte, aber beim INSERT sollte es doch eigentlich egal sein welche Werte geschrieben werden. Oder schreibst du den Wert für den Primärschlüssel (Datensatz ID) selbst? Beim z.B. MS Sql-Server wird der ID Wert automatisch beim INSERT vergeben...
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Bei einem Insert, wenn deine ID-Spalte autoincrement ist, lässt man die ID weg, da die ja - wie die Deklaration schon sagt - automatisch inkrementiert wird.
    Sprich wenn du Tabelle Test hast , mit den Spalten ID (autoincrement) und Bezeichnung hast, machst du nicht

    INSERT INTO Test (id, bezeichnung) VALUES (1, 'TestBezeichnung')
    sondern
    INSERT INTO Test (bezeichnung) VALUES ('TestBezeichnung') -> Der Datensatz bekommt somit von alleine die nächsthöhere, noch nicht vergebene ID

    -> Verhindert, dass du versucht den selben Datensatz 2x zu speichern, da jeder Datensatz einzigartig ist.


    LG Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    @Acr0most nur das es hier um ein Primary Key geht

    Quellcode

    1. CREATE TABLE `vergehen` (
    2. `steamid` varchar(20) NOT NULL,
    3. `Datum` date DEFAULT NULL,
    4. `Gesetzesbruch` varchar(100) DEFAULT NULL,
    5. PRIMARY KEY (`steamid`)
    6. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    wenn der auf autoincrement gesetzt wäre, wäre es kein Problem, egal ob PK oder nicht.


    PS: Ich gehe davon aus, dass man eine ID als PK verwendet :D
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup: