VisualBasic Insert in MySql gibt: The CommandText property has not been properly initialized

L

lyzerak

Gast
Hi Leute,

Ich bin noch nicht so gut mit dem Syntax von VB vertraut. Ich bekomme den oben besagten Fehler beim INSERT in eine DB.
Der Code sieht wie folgt aus:

Code:
...
            For Each item In ListOfItemsToDB
                query = "INSERT INTO ItemDB (Item_Name) VALUES (' " & item & " ')"
                SQLCmd.ExecuteReader()
            Next item
...

Wenn ich statt VALUES (' " & item & " ')" einen normalen "TEST" string mache funktioniert der Insert. Ich möchte jeden einzelnen item aus ListOfItemsToDB inserten.

Kann jemand helfen?

Thx
 
Von was für einem Datentyp ist denn ListOfItemsToDB überhaupt?
Wenn es Strings sind, musst du bei einfachen Hochkommata in den Werten aufpassen und diese verdoppeln.
 
Eine Variable query mit dem SQL String zu definieren allein reicht nicht. Du musst ihn auch schon deinem SQLCmd Objekt in der CommandText Eigenschaft zuweisen.

Desweiteren liefert dir ein INSERT Statement kein Resultat, daher brauchst du nicht unbedingt .ExecuteReader() verwenden. Besser ist .ExecuteNonQuery()

Und am besten solltest du es vermeiden SQL selbst zu konkatenieren - SQL Injections werden so ermöglicht. Besser ist die Variante mit parametrisierten Befehlen:

Code:
For Each item In ListOfItemsToDB
    SQLCmd.CommandText = "INSERT INTO ItemDB (Item_Name) VALUES (@Item)"
    SQLCmd.Parameters.AddWithValue("@Item", item)
    SQLCmd.ExecuteNonQuery()
Next
 
Zurück
Oben