Seite 1 von 1

GELÖST Vorbereitete SQL-Befehle Unexpected token

Verfasst: Do, 24.04.2014 15:09
von WSO
Hallo Zusammen,
ich wollte dem Rat aus dem Base-Handbuch folgen und meine SQL-Zugriffe parametrisieren.
Leider macht der Set-Befehl Probleme, deren Ursache ich nicht finden kann.

BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.sdbc.SQLException
Message: Unexpected token: SET in statement [INSERT INTO "tTest" SET text =?].

Was mache ich falsch:

Code: Alles auswählen

	sub dbzugriffparm ()
    
    	DIM oDatasource AS OBJECT
		DIM oConnection AS OBJECT
		
		oDatasource = thisComponent.Parent.CurrentController
		IF NOT (oDatasource.isConnected()) THEN oDatasource.connect()
		oConnection = oDatasource.ActiveConnection()
		
		DIM oSQL_Statement AS OBJECT
		' das Objekt, das den SQL-Befehl ausführt
		
		DIM stSql AS STRING
		' Text des eigentlichen SQL-Befehls
		
		DIM oResult AS OBJECT
		' Ergebnis für executeQuery
		
		DIM iResult AS INTEGER
		' Ergebnis für executeUpdate
		
		oSQL_Statement = oConnection.createStatement()
		
		Dim iArt as String
		
		
		iArt = "Parm1"
		
		
		
		stSql = "INSERT INTO ""tTest""" _
			& " SET text =?"
		
		msgbox (stSql)
			
		
		oSQL_Statement = oConnection.prepareStatement(stSql)
			oSQL_Statement.setString(1, iArt)
			iResult = oSQL_Statement.executeUpdate
						
			msgbox ("Result = " + iResult)
		
		oSQL_Statement.close()
		
		
	end sub

Moderation:
Zur Darstellung von Programmcode sind in der Forums-Software die [​code]…[​/code] Tags vorgesehen. Diese habe ich für dich gesetzt.
lorbass, Moderator

Re: Vorbereitete SQL-Befehle Unexpected token

Verfasst: Do, 24.04.2014 16:15
von RobertG
Hallo WSO,

mit SET kannst Du nur bei einem Update arbeiten. Beim Insert muss das mit VALUES laufen.
Beispiele:
INSERT INTO "Tabelle" ("Ware","Preis") VALUES ('Kaffee', 8.79);
UPDATE "Tabellenname" SET "Jahrgang" = "Jahrgang"+1

Beide aus dem Handbuch, aktuelle Fassung 4.2

Gruß

Robert

Re: Vorbereitete SQL-Befehle Unexpected token

Verfasst: Do, 24.04.2014 17:12
von WSO
Vielen Dank,
der klassische RTFM-Fehler (read the fucking menu)