MySql INSERT , versucht Code auszuführen und nicht in die Tabelle zu schreiben
Ich habe folgendes Problem,
Ich bekomme die Fehlermeldung Syntax Fehler im "Code", da er versucht den Code den ich eigentlich in eine Tabelle speichern möchte, aus zu führen.
Beispiel Daten für die Variable Code:
Das sollte eigentlich nicht ausgeführt werden.
Ist klar das er mit dem Code nix anfangen kann.
Wie kann ich dieses Problem am besten lösen?
string Code = Eingabe_Code.Text;
MySqlCommand command = new MySqlCommand("INSERT INTO Programmieren (Sprache, Thema, Kategorie, Code, Abhängigkeiten, Zusatz, Erklärung) VALUES (' " + Sprache + "', '" + Thema + "', '" + Kategorie + "', '" + Code + "', '" + Abhängigkeiten + "', '" + Zusatz + "', '" + Erklärung + "' )", connection);
command.ExecuteNonQuery();
Ich bekomme die Fehlermeldung Syntax Fehler im "Code", da er versucht den Code den ich eigentlich in eine Tabelle speichern möchte, aus zu führen.
Beispiel Daten für die Variable Code:
connectionString = @"server=localhost;port=3306;user id=root;password=;database=ddt";
try
{
connection = new MySql.Data.MySqlClient.MySqlConnection(connectionString);
connection.Open();
MySqlCommand command1 = new MySqlCommand("INSERT INTO Finanzen (ID, Datum, Ein_Aus, Abs_Emp, Verwendung, Summe, Bemerkung, Kategorie) VALUES ('NULL', ' " + datum1 + "', '"+ein_aus+"', '"+abs+"', '"+verwendung+"', '"+summe+"', '"+bemerkung+"', '"+kategorie1+"' )", connection);
command1.ExecuteNonQuery();
Das sollte eigentlich nicht ausgeführt werden.
Ist klar das er mit dem Code nix anfangen kann.
Wie kann ich dieses Problem am besten lösen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 53985647874
Url: https://administrator.de/contentid/53985647874
Ausgedruckt am: 09.11.2024 um 01:11 Uhr
2 Kommentare
Neuester Kommentar
Anstatt das SQL mittels String-Verkettung zusammen zu bauen, kann man quasi Platzhalter verwenden. Diesen Platzhaltern kann man anschließend Werte zuweisen - die dann auch nur als Daten interpretiert werden.
"INSERT INTO table (foo) VALUES ('bar')" wird quasi zu "INSERT INTO table (foo) VALUES (@ParameterName)"
Dem Platzhalter @parametername kann man dann mit command.Parameters.AddWithValue("@ParameterName", "bar"); den Wert "bar" zuweisen.
Parametrisierte Queries helfen auch gegen SQL-Injections. Als Beispiel könnten ja bei einer String-Verkettung in den einzelnen verwendeten Variablen die zum Bau des SQL-Strings herangezogen werden, bösartige Werte enthalten sein.
Parametrisierte Queries. https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-param ...
"INSERT INTO table (foo) VALUES ('bar')" wird quasi zu "INSERT INTO table (foo) VALUES (@ParameterName)"
Dem Platzhalter @parametername kann man dann mit command.Parameters.AddWithValue("@ParameterName", "bar"); den Wert "bar" zuweisen.
Parametrisierte Queries helfen auch gegen SQL-Injections. Als Beispiel könnten ja bei einer String-Verkettung in den einzelnen verwendeten Variablen die zum Bau des SQL-Strings herangezogen werden, bösartige Werte enthalten sein.
Parametrisierte Queries. https://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-param ...