2016-04-04 13 views
1

Ich benutze VB.net für den Zugriff auf eine MySQL-Datenbank und Einfügen von Daten in diese Tabelle. ich diese Daten aus einer Oper Datenbank erhalten, die Abfrage ich verwende ist:MySQL Einfügen in Fehler mit VB.net

Dim queryInsert As String = "INSERT INTO customer_company(customer_id, name, street, zip, 
city,country,comments) values(" + c.sn_account.Trim + ", " + name + ", " + road + ", " 
+ postcode + ", " + city + ", " + country + ", " + name + ")" 

ich dann einen Fehler bekommen, wenn es um die Erwähnung stammt:

B010, Charles Birt & Co obwohl, Loch Haus, null, Tenby, Dyfed, Charles Birt & Co

ich, dass dies die '&' sein in den Daten, so habe ich versucht, es mit || ersetzen Chr (38) || und auch entkommen es mit \ &, aber diese funktionieren nicht. Ich habe auch versucht, die Postleitzahl auf verschiedene Dinge wie 'N/A', '' und Null, weil dieser bestimmte Datensatz keine Postleitzahl hat, aber dies immer noch den Fehler gibt.

Weiß nicht, ob es die Daten oder die Abfrage, irgendwelche Vorschläge wäre großartig.

+0

Was ist der Fehler? – Mihai

+0

Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von "Birt & Co, Loch House, null, Tenby, Dyfed, Charles Birt & Co)" in Zeile 1 entspricht –

Antwort

0

Nicht sicher, ob dies Ihr Problem behebt, aber wenn Sie einen Wert mit einer String-Datentypspalte in SQL hinzufügen/einfügen, sollten Sie '' haben.

in Ihrem Beispiel:

Dim queryInsert As String = "INSERT INTO customer_company(customer_id, 
name, street, zip, city,country,comments) 
values(" + c.sn_account.Trim + ", '" + name + "', '" + road + "', " 
+ postcode + ", '" + city + "', '" + country + "', '" + name + "')" 

ich nicht '' in customer_id und Postleitzahl hinzufügen, weil ich denke, dass sie Typ nicht Zeichenfolge date sind.

+0

Versuchen Sie, einen Kunden mit dem Namen 'Sean O einfügen "Brian". Oder noch schlimmer: ''; Löschen von customer_company; - '' –

3

Verwenden Sie bitte parameters, wenn Sie SQL-Befehle ausführen. Dies vermeidet Probleme, wie Sie in Ihrer Frage auftreten und minimiert auch SQL-Injection-Angriffe:

+0

Ich dachte, Parameter machen eine Abfrage langsamer? –

+0

Woher hast du das? Haben Sie die Leistung mit und ohne Parameter gemessen? –

+0

Ein Kollege sagte mir, ich solle sie nicht benutzen, weil sie die Ausführungszeit erhöhen, ich vertraute ihm und benutzte sie nicht. Habe es jetzt sowieso behoben danke! –