IPB

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
> Kein Eintrag trotz korrekter Syntax
Roadrunner0815
post 17. Mar 2016, 16:27
Post #1


new Member
*

Group: Members
Posts: 7
Joined: 08.01.2016
Member No.: 483
LV Version: 2014
Zertifizierung: CLAD
LV User seit: 2008



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
Go to the top of the page
 
+Quote Post
CB
post 17. Mar 2016, 20:58
Post #2


proven Member
****

Group: Administrators
Posts: 315
Joined: 16.10.2006
From: Düsseldorf
Member No.: 2
LV Version: current
Zertifizierung: CLA
LV User seit: 2001



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 ...


--------------------
künstliche Intelligenz ist besser als natürliche Dummheit!
rotabench:rotierende Prüfstände nach dem Baukasten-Prinzip
Go to the top of the page
 
+Quote Post
Roadrunner0815
post 18. Mar 2016, 08:27
Post #3


new Member
*

Group: Members
Posts: 7
Joined: 08.01.2016
Member No.: 483
LV Version: 2014
Zertifizierung: CLAD
LV User seit: 2008



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...
Go to the top of the page
 
+Quote Post
CB
post 23. Mar 2016, 21:32
Post #4


proven Member
****

Group: Administrators
Posts: 315
Joined: 16.10.2006
From: Düsseldorf
Member No.: 2
LV Version: current
Zertifizierung: CLA
LV User seit: 2001



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 ...


--------------------
künstliche Intelligenz ist besser als natürliche Dummheit!
rotabench:rotierende Prüfstände nach dem Baukasten-Prinzip
Go to the top of the page
 
+Quote Post
Roadrunner0815
post 30. Mar 2016, 12:58
Post #5


new Member
*

Group: Members
Posts: 7
Joined: 08.01.2016
Member No.: 483
LV Version: 2014
Zertifizierung: CLAD
LV User seit: 2008



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
Go to the top of the page
 
+Quote Post
CB
post 09. Apr 2016, 09:04
Post #6


proven Member
****

Group: Administrators
Posts: 315
Joined: 16.10.2006
From: Düsseldorf
Member No.: 2
LV Version: current
Zertifizierung: CLA
LV User seit: 2001



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


--------------------
künstliche Intelligenz ist besser als natürliche Dummheit!
rotabench:rotierende Prüfstände nach dem Baukasten-Prinzip
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



Lo-Fi Version Time is now: 28.03.2024 - 10:02