deutschen Handbuch - QT software GmbH
deutschen Handbuch - QT software GmbH
deutschen Handbuch - QT software GmbH
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