Update Tabelle mit oConn:Execute

SQL Express von Boris Borzic

Moderator: Moderatoren

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

Update Tabelle mit oConn:Execute

Beitrag von Rudolf »

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: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Update Tabelle mit oConn:Execute

Beitrag von georg »

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 S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Update Tabelle mit oConn:Execute

Beitrag von Rudolf »

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: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Update Tabelle mit oConn:Execute

Beitrag von georg »

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 S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Update Tabelle mit oConn:Execute

Beitrag von Rudolf »

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: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Update Tabelle mit oConn:Execute

Beitrag von Rudolf »

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: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Update Tabelle mit oConn:Execute

Beitrag von Tom »

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: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Update Tabelle mit oConn:Execute

Beitrag von Rudolf »

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