Das Binärprotokoll ermöglicht das Senden und Empfangen von
Datums- und Uhrzeitwerten (DATE
,
TIME
, DATETIME
und
TIMESTAMP
) mithilfe der
MYSQL_TIME
-Struktur. Die Bestandteile dieser
Struktur werden in
Abschnitt 24.2.5, „C-API: Prepared Statement-Datentypen“,
beschrieben.
Um temporale Datenwerte zu senden, legen Sie eine vorbereitete
Anweisung mit mysql_stmt_prepare()
an und
richten die Temporalparameter, bevor Sie die Anweisung mit
mysql_stmt_execute()
ausführen,
folgendermaßen ein:
In der MYSQL_BIND
-Struktur, die mit dem
Datenwert verbunden ist, stellen Sie den
buffer_type
-Teil auf den Typ, der die Art
des zu sendenden Temporalwerts angibt. Für
DATE
-, TIME
-,
DATETIME
- oder
TIMESTAMP
-Werte setzen Sie
buffer_type
auf
MYSQL_TYPE_DATE
,
MYSQL_TYPE_TIME
,
MYSQL_TYPE_DATETIME
oder
MYSQL_TYPE_TIMESTAMP
.
Stellen Sie den buffer
-Teil der
MYSQL_BIND
-Struktur auf die Adresse der
MYSQL_TIME
-Struktur ein, in die Sie den
Temporalwert übergeben.
Füllen Sie die Bestandteile der
MYSQL_TIME
-Struktur aus, die sich für
den Typ des zu übergebenden Temporalwerts eignen.
Binden Sie mit mysql_stmt_bind_param()
die
Parameterdaten an die Anweisung. Dann können Sie
mysql_stmt_execute()
aufrufen.
Abgerufen werden die Temporalwerte ganz ähnlich, nur dass Sie
beim Abruf den buffer_type
-Teil auf den Typ
des Werts einstellen, den Sie empfangen wollen, und den
buffer
-Teil auf die Adresse einer
MYSQL_TIME
-Struktur, in die der Rückgabewert
eingesetzt werden soll. Mit
mysql_bind_results()
binden Sie die Puffer an
die Anweisung, nachdem Sie
mysql_stmt_execute()
aufgerufen haben und
bevor Sie die Ergebnisse abholen.
Das folgende einfache Beispiel fügt DATE
-,
TIME
- und TIMESTAMP
-Daten
ein. Die mysql
-Variable sei ein gültiger
Verbindungs-Handle.
MYSQL_TIME ts; MYSQL_BIND bind[3]; MYSQL_STMT *stmt; strmov(query, "INSERT INTO test_table(date_field, time_field, timestamp_field) VALUES(?,?,?"); stmt = mysql_stmt_init(mysql); if (!stmt) { fprintf(stderr, " mysql_stmt_init(), out of memory\n"); exit(0); } if (mysql_stmt_prepare(mysql, query, strlen(query))) { fprintf(stderr, "\n mysql_stmt_prepare(), INSERT failed"); fprintf(stderr, "\n %s", mysql_stmt_error(stmt)); exit(0); } /* Richte Eingabepuffer für alle 3 Parameter ein */ bind[0].buffer_type= MYSQL_TYPE_DATE; bind[0].buffer= (char *)&ts; bind[0].is_null= 0; bind[0].length= 0; ... bind[1]= bind[2]= bind[0]; ... mysql_stmt_bind_param(stmt, bind); /* Liefere die Daten für die ts-Struktur*/ ts.year= 2002; ts.month= 02; ts.day= 03; ts.hour= 10; ts.minute= 45; ts.second= 20; mysql_stmt_execute(stmt); ..
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.