Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Anmeldungen zum Forentreffen 2018 sind auf der Anmeldeseite möglich
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

Update Tabelle mit oConn:Execute

SQL Express von Boris Borzic

Moderator: Moderatoren

Antworten
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1323
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Update Tabelle mit oConn:Execute

Beitrag von Rudolf » Mo, 01. Feb 2016 11:40

Hallo,
ich versuche eine Tabell abzudaten

Code: Alles auswählen

cStmt := "UPDATE auftrag SET (docid,xml1) VALUES (?,?) WHERE auftrag.id = 11128;"
aData := {11128,'asdfasdf'}
oStmt:SQLString := cStmt
oStmt:Prepare()
nResult := oStmt:Execute(aData )
aber bekomme immer einen Syntax Fehler:
MySQL][ODBC 3.51 Driver][mysqld-5.1.73]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(docid,xml1) VALUES (66878,'asdfasdf' at line 1

Stimmt etwas mit meinem Statement nicht ? Ein Insert in die Tabelle funktioniert auf diese Art:

Code: Alles auswählen

     cStmt := 'INSERT INTO auftrag (id,docid,xml1) VALUES (?,?,?);"
Grüße
Rudolf

georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1953
Registriert: Fr, 08. Feb 2008 21:29

Re: Update Tabelle mit oConn:Execute

Beitrag von georg » Mo, 01. Feb 2016 12:31

Hallo, Rudolf,


die UPDATE Syntax ist eher so:

UPDATE table SET field1 = value1, field2 = value2, ... WHERE condition

Du scheinst das mit der INSERT Syntax zu verwechseln?
Liebe Grüsse aus der Eifel,

Georg

Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1323
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Update Tabelle mit oConn:Execute

Beitrag von Rudolf » Mo, 01. Feb 2016 13:49

Hallo Gerog,
ich muss auch binäre Daten in Blob Felder füllen wie z.B. PDFs oder JPGs oder XML Dateien, wie bekomme ich die Variablen in das Update Statement ? Es müsste doch auch für Update ähnlich mit SQLEXPRESS gehen.
Grüße
Rudolf

georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1953
Registriert: Fr, 08. Feb 2008 21:29

Re: Update Tabelle mit oConn:Execute

Beitrag von georg » Mo, 01. Feb 2016 14:26

Hallo, Rudolf -


schwere Frage, da ich schon seit geraumer Zeit nicht mehr mit SQLExpress gearbeitet habe.

Aber theoretisch sollte das so klappen (können):

Code: Alles auswählen

UPDATE auftrag SET docid = ?, xml1 = ? WHERE auftrag.id = 11128;
Und dann mit :prepare und :execute ausführen.

Der INSERT Befehl listet (wenn nicht alle Felder gefüllt werden) die Felder in der einen Liste, und die zu übertragenden Werte in einer zweiten Liste.

Was Binärwerte angeht, da verweist Boris in der Dokumentation auf SQLValue() zum Umsetzen der Werte in ein Format, mit dem der ODBC-Treiber was anfangen kann.
Liebe Grüsse aus der Eifel,

Georg

Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1323
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Update Tabelle mit oConn:Execute

Beitrag von Rudolf » Mo, 01. Feb 2016 14:39

Hallo Gerog,
Deinen Syntax werde ich versuchen, aber um den Typ muss ich mich nicht kümmern wenn ich die Daten im Array übergebe, das macht SQLEXPRESS intern selbst. Kann also nur der andere Syntax beim Udpate im Vergleich zum Insert sein
Grüße
Rudolf

Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1323
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Update Tabelle mit oConn:Execute

Beitrag von Rudolf » Mo, 01. Feb 2016 14:58

Hallo Georg,
Danke ! hat funktioniert, auch mit Binär Daten. Geht gleich wie beim Insert, nur eben der andere Syntax im SQL Statement. Normal arbeite ich mit einem Cursor, aber in diesem Fall muss ich ein Statement verwenden um ein Problem in einer ORACLE Tabelle einzugrenzen, mit Cursor bekomme ich immer einen constraint Fehler wegen primary key obwohl es den Satz noch nicht iin der Tabelle gibt, hoffe über das Statement geht es jetzt.
SQLEXPRESS ist immer noch die beste Lösung für SQL. Und ich arbeite immer noch mit der ersten Version.
Grüße
Rudolf

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 6831
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Update Tabelle mit oConn:Execute

Beitrag von Tom » Mo, 01. Feb 2016 16:14

SQLEXPRESS ist immer noch die beste Lösung für SQL.
So isses.

Und das gilt auch für Serverlösungen. Nett, was Alaska da mit CXP und HttpEndPoint gestrickt hat, aber Xb2.Net ist extrem verlässlich, sehr robust, schnell - und viel einfacher in der Handhabung.
Herzlich,
Tom

Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1323
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Update Tabelle mit oConn:Execute

Beitrag von Rudolf » Mo, 01. Feb 2016 22:46

Hallo Tom,
und die neue XB2NET scheint mir auch weit sinnvoller als CXP. Mit SQL hatte ich mal eine ziemlich eigenartige Diskussion mit Frank, er war der Meinung dass NULL Werte in der ODBCDBE nicht notwendig sind, hat mir sehr viel Geld gekostet alles auf SQLEXPRESS umzuschreiben. Hat lange gedauert bis Alaska darauf reagiert hat. Nach dem Umstieg hatte ich nie wieder Probleme und nicht so sinnlosen Diskussionen über Dinge die eigentlich Standard sind. Boris vertraue ich weit mehr als Alaska, vor allem weil ich noch nie ein unlösbares Problem mit seiner Software hatte, und er hört auf seine Kunden und löst Probleme unbürokratisch und schnell. Wenn man die Doku von SQLEXPRESS liest, sieht man schon dass hier wesentlich mehr dahinter ist als bei der ODBCDBE.
Grüße
Rudolf

Antworten