Printable Version of Topic

Click here to view this topic in its original format

IBB Forum _ ADO-Toolkit _ Kein Eintrag trotz korrekter Syntax

Posted by: Roadrunner0815 17. Mar 2016, 16:27

Hallo,

ich habe ein kleines Problem beim Einfügen neuer Daten in meine Datenbank. Ich habe eine MySQL-Datenbank über XAMPP laufen. Die Kommunikation mit der Datenbank steht, ich kann z.B. alle in der DB vorhandenen Tabellen abfragen.
Was leider nicht geht ist das Einfügen neuer Datensätze. Die Syntax des SQL-Befehls ist korrekt, wenn ich ihn bei phpmyadmin eingebe funktioniert alles. Lediglich über das ADO-Toolkit geht es leider nicht. Eine Fehlermeldung wird nicht angezeigt.

Hat jemand eine Idee woran das liegt bzw. eine Lösung?

Vielen Dank!

MfG Roadrunner

Posted by: CB 17. Mar 2016, 20:58

QUOTE (Roadrunner0815 @ 17. Mar 2016, 17:27) *
Hallo,

ich habe ein kleines Problem beim Einfügen neuer Daten in meine Datenbank. Ich habe eine MySQL-Datenbank über XAMPP laufen. Die Kommunikation mit der Datenbank steht, ich kann z.B. alle in der DB vorhandenen Tabellen abfragen.
Was leider nicht geht ist das Einfügen neuer Datensätze. Die Syntax des SQL-Befehls ist korrekt, wenn ich ihn bei phpmyadmin eingebe funktioniert alles. Lediglich über das ADO-Toolkit geht es leider nicht. Eine Fehlermeldung wird nicht angezeigt.

Hat jemand eine Idee woran das liegt bzw. eine Lösung?

Vielen Dank!

MfG Roadrunner


Sind in den Daten evtl. Strings? phpmyadmin würde Sonderzeichen in Strings SQL-Konform umwandeln. Das ADO-Toolkit macht das nicht, bzw. man müsste die Funktion "escape Strings" verwenden ...

Da würde ich anfangen zu suchen ...

Posted by: Roadrunner0815 18. Mar 2016, 08:27

Danke für den Tip aber irgendwas mach ich da wohl noch falsch. Ich habe den String welchen ich mit LabView zusammengesetzt habe an das Vi "Escape SQL-Datestring" angeschlossen und den Ausgang auf ADOTool_insertDate verbunden. Funktioniert leider auch nicht...

Posted by: CB 23. Mar 2016, 21:32

poste mal deinen Code bitte ...
ich hab den Verdacht, dass du jetzt den ganzen SQL-String escapest? Das wäre falsch, es soll nur der Inhalt des Datums (dem String, den du in die DB schieben willst ...) escaped werden ...

Posted by: Roadrunner0815 30. Mar 2016, 12:58

Am Datum kann es nicht liegen. Ich habe meinen String jetzt testhalber nur auf Zahlenwerte umgebaut. Der Programmaublauf ist im Prinzip wie folgt:
- drei Zahlenwerte werden als Strings eingegeben
- eine Stringkonstante mit dem SQL-Befehl wird erstellt
- die drei Zahlenstrings, der SQL-Befehl Kommas und weitere Zeichen die zu dem SQL-Befehl gehören werden zusammengefügt (LabView-Vi "Strings verknüpfen")
- der String wird der ADo-Funktion "ADO_Tool Insert Data" übergeben

Posted by: CB 09. Apr 2016, 09:04

dann liegt es an der Umwandlung der Zahlen in einen String, im Speziellen am Dezimalpunkt:

die Zahl 9,876 wird auf einem deutschsprachigen PC in den String "9,876" umgewandelt. Damit kann aber SQL nichts anfangen, weil in SQL das Komma IMMER das Spalten-Trennzeichen ist. Man muss in LV zum Umwandeln von Zahlen in Strings im "Format String" (Format into String Primitive verwenden!) ein %.; voranstellen.

Der Format-String sieht also wie folgta aus: >>%.;INSERT INTO meinetabelle (spalte1, spalte2) VALUES "%0.2f", "%0.2f"<<

Schließt man da 2 Zahlen an, z.B. 1,234 und 5,678, dann macht die Primitive daraus:
>>INSERT INTO meinetabelle (spalte1, spalte2) VALUES "1.234", "5.678"<<

macht man das ohne vorangestelltes "%.;" dann kommt folgender String raus:
>>INSERT INTO meinetabelle (spalte1, spalte2) VALUES "1,234", "5,678"<<

das letzte INSERT-Statement kann der SQL-Parser nicht verarbeiten, weil 2 Spalten angegeben werden, die gefüllt werden sollen, hinter Values aber Daten für 4 Spalten angegeben sind:
Spalte 1: >>"1<<
Spalte 2: >>234"<<
Spalte 3: >>"5<<
Saplte 4: >>678"<<

Bei Spalte 1 und 3 fehlt für den Parser dann auch jeweils das " am Ende, bei Spalte 2 und 4 das " am Anfang. Damit entstehen im Query min. 5 Fehler:
1. Datentypenen nicht eindeutig, weil das führende oder schließende " fehlt
2. mehr Daten als Spalten angegeben ...

viele Grüße
cb

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)