Fehler bei neuem Datensatz in MySql
-
Hi Community,
in meinem aktuellen Projekt bin ich auf ein Problem gestoßen dessen Ursache ich nicht kenne.
Ich erzeuge aus meiner .Net Anwendung einen neuen Datensatz in meiner MySql Datenbank über den MySql-Conncetor.
Alle Felder bis auf eins werden korrekt gefüllt. Mein Problem besteht beim Schreiben eines Dateipfads in ein Feld vom Typ varchar in ausreichender Größe.
Dabei wird der Pfad zwar geschrieben, jedoch fallen mir alle '\' Backslashes weg. Das bedeutet aus einem Pfad z.B. "C:\\folder\\file1.doc" wird "C:folderfile1.doc".
Weiß einer von euch zufällig woran das Problem liegen könnte?
Der dazugehörige Code lautet wie folgt:
cmd.CommandText = "INSERT INTO track (artistid, albumid, trackpath, tracktitle) VALUES (\"" + artistid + "\", \"" + albumid + "\", \"" + trackpath + "\", \"" + tracktitle + "\")"; cmd.Connection = conn; cmd.Connection.Open(); myAdapter.InsertCommand = cmd; myAdapter.InsertCommand.ExecuteNonQuery(); cmd.Connection.Close();
Es handelt sich hierbei um die MySql Version 5.0.7 und ich verwende den offiziellen MySql-Connector vom Hersteller selbst.
Gruß RandomUserName!
-
so rein hypotetisch .. du brauchst 4*\ ... beim bauen des queries werden die ersten \\ zu \, beim Eintrag in die DB macht der das wieder und dzu stehst ganz ohne \ da
-
Benutze Parameter, dann entfallen lästige Escaping-Geschichten:
cmd.CommandText = "INSERT INTO track (artistid, albumid, trackpath, tracktitle) VALUES (@artistid , @albumid, @trackpath, @tracktitle)"; cmd.Parameters.AddWithValue("@artistid",artistid); cmd.Parameters.AddWithValue("@albumid",albumid); cmd.Parameters.AddWithValue("@trackpath",trackpath); cmd.Parameters.AddWithValue("@tracktitle",tracktitle);
-
Hi padreigh,
deine Vermutung ist korrekt. Wenn ich manuell dem Pfad zwei weitere Slashes spendiere wird der Pfad korrekt in die Datenbank geschrieben.
Hey geeky,
hast Recht, die Parameter Variante ist schöner und sauberer.
Danke euch Jungs für die Hilfe!