08.05.2013 Aufrufe

deutschen Handbuch - QT software GmbH

deutschen Handbuch - QT software GmbH

deutschen Handbuch - QT software GmbH

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

die Parameterwerte noch nicht bekannt sind, wenn der Befehl<br />

vorbereitet wird,<br />

oder wenn<br />

die Typen von Parameterwerten in andere umgewandelt werden<br />

müssen.<br />

Bevor ein Parameterwert gesetzt werden kann, muß ihm eine Variable,<br />

bzw. genauer ein Speicherplatz für den Platzhalter mithilfe der Funktion<br />

SQLBindParameter zugeordnet werden ("Parameter Binding").<br />

SQLBindParameter gibt zudem den Datentyp des Speicherplatzes,<br />

ggf. die Genauigkeit, Länge und Dezimalbereich an und assoziiert die<br />

Spalte mit dem Parameter. Danach kann durch Zuweisung des<br />

gewünschten Wertes an diesen Speicherplatz (d.h. der Variablen) der<br />

Parameter gesetzt werden. Z.B.:<br />

CHARACTER szName*30<br />

INTEGER (SQLULEN) :: LENszName = 30<br />

INTEGER (SQLLEN) :: cbName<br />

...<br />

rtc = SQLPrepare( stmt, &<br />

"INSERT INTO adressbuch (name, vorname,<br />

telefon) VALUES (?, ?, ?)"//CHAR(0), &<br />

SQL_NTS )<br />

rtc = SQLBindParameter( stmt, 1, SQL_PARAM_INPUT, &<br />

SQL_C_CHAR, SQL_CHAR, &<br />

LENszName, 0, szName, 0, &<br />

cbName )<br />

...<br />

szName = 'Mustermann'; cbName = SQLNTSL;<br />

rtc = SQLExecute( stmt )<br />

! INSERT des Datensatz ("'Mustermann',...")<br />

Erläuterung: An die erste Spalte (zweites Argument = 1) vom Typ<br />

(SQL_CHAR) der Tabelle "adressbuch" wird der Speicherplatz der<br />

Eingabevariablen szName (SQL_PARAM_INPUT) vom Typ<br />

SQL_C_CHAR mit Länge LENszName gebunden. In der Variablen<br />

cbName wird die Länge des Werts vorgegeben. Die Angabe der Puffergröße<br />

(vorletztes Argument) für den Textpuffer (szName) ist hier nicht<br />

notwendig (und ist zu 0 gesetzt).<br />

Der Datentyp des Speicherplatzes (i.e.v. der Variable) muß nicht mit dem<br />

Typ der Spalte in der Tabelle der Datenquelle übereinstimmen. Man kann<br />

bspw. die Konvertierungsfunktionen des Treibers nutzen, um bspw. einen<br />

als Ganzzahl (SQL_INTEGER) in der Tabelle abgelegten Wert in einen<br />

Zeichentyp (SQL_C_CHAR) umgewandelt an die Applikation<br />

zurückzugeben (sofern der Treiber diese Konvertierung unterstützt).<br />

Die Zuordnungen der Speicherplätze (d.h. C/Fortran Variablen zu<br />

ODBC/SQL Input Parameter) bleiben solange erhalten, bis die Funktion<br />

SQLFreeHandle(SQL_HANDLE_STMT, ... ) aufgerufen<br />

wird. Während der Laufzeit kann an den Platzhalter ein anderer<br />

Speicherplatz gebunden werden, indem die Funktion<br />

SQLBindParameter ein weiteres Mal aufgerufen wird. Auch der<br />

Wert des Speicherplatzes kann während der Laufzeit beliebig geändert<br />

werden. Genutzt wird vom Treiber bei Ausführung eines Befehls der jeweils<br />

aktuelle Wert.<br />

5.5.5 Transaktionen<br />

ODBC bzw. SQL kennt zwei COMMIT Modi:<br />

http://www.qt<strong>software</strong>.de ForDBC - Fortran Database Connectivity 26

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!