my_bool mysql_stmt_send_long_data(MYSQL_STMT *stmt,
unsigned int parameter_number, const char *data, unsigned long
length)
Beschreibung
Ermöglicht es einer Anwendung, Parameterdaten in Stücken
(oder „Chunks“) an den Server zu schicken. Diese
Funktion kann mehrmals aufgerufen werden, um die Teile eines
Zeichen- oder Binärdatenwerts für eine Spalte zu übergeben.
Die Werte müssen den Datentyp TEXT
oder
BLOB
haben.
parameter_number
gibt an, mit welchem
Parameter die Daten verbunden werden sollen. Die Parameter
werden beginnend mit 0 nummeriert. data
ist
ein Zeiger auf einen Puffer, der die zu übermittelnden Daten
enthält, und length
ist die Anzahl der
Bytes im Puffer.
Hinweis: Der nächste Aufruf
von mysql_stmt_execute()
ignoriert den
Bind-Puffer für alle Parameter, die seit dem letzten
mysql_stmt_execute()
oder
mysql_stmt_reset()
mit
mysql_stmt_send_long_data()
benutzt worden
sind.
Wenn Sie die gesendeten Daten zurücksetzen/vergessen
möchten, tun Sie dies mit
mysql_stmt_reset()
. Siehe
Abschnitt 24.2.7.21, „mysql_stmt_reset()
“.
Rückgabewerte
Null, wenn die Daten erfolgreich an den Server gesandt wurden. Ein von null verschiedener Wert, wenn ein Fehler auftrat.
Fehler
CR_COMMANDS_OUT_OF_SYNC
Befehle wurden in der falschen Reihenfolge ausgeführt.
CR_SERVER_GONE_ERROR
Der MySQL Server ist nicht mehr verfügbar.
CR_OUT_OF_MEMORY
Speicherüberlauf.
CR_UNKNOWN_ERROR
Ein unbekannter Fehler ist aufgetreten.
Beispiel
Das folgende Beispiel zeigt, wie die Daten für eine
TEXT
-Spalte stückchenweise übermittelt
werden. Es fügt den Datenwert 'MySQL - The most
popular Open Source database'
in die Spalte
text_column
ein. Die Variable
mysql
sei ein gültiger Verbindungs-Handle.
#define INSERT_QUERY "INSERT INTO test_long_data(text_column) VALUES(?)" MYSQL_BIND bind[1]; long length; smtt = mysql_stmt_init(mysql); if (!stmt) { fprintf(stderr, " mysql_stmt_init(), out of memory\n"); exit(0); } if (mysql_stmt_prepare(stmt, INSERT_QUERY, strlen(INSERT_QUERY))) { fprintf(stderr, "\n mysql_stmt_prepare(), INSERT failed"); fprintf(stderr, "\n %s", mysql_stmt_error(stmt)); exit(0); } memset(bind, 0, sizeof(bind)); bind[0].buffer_type= MYSQL_TYPE_STRING; bind[0].length= &length; bind[0].is_null= 0; /* Binde die Puffer */ if (mysql_stmt_bind_param(stmt, bind)) { fprintf(stderr, "\n param bind failed"); fprintf(stderr, "\n %s", mysql_stmt_error(stmt)); exit(0); } /* Liefere Daten stückweise an den Server */ if (!mysql_stmt_send_long_data(stmt,0,"MySQL",5)) { fprintf(stderr, "\n send_long_data failed"); fprintf(stderr, "\n %s", mysql_stmt_error(stmt)); exit(0); } /* Sende das nächste Datenstück */ if (mysql_stmt_send_long_data(stmt,0," - The most popular Open Source database",40)) { fprintf(stderr, "\n send_long_data failed"); fprintf(stderr, "\n %s", mysql_stmt_error(stmt)); exit(0); } /* Führe nun die Anfrage aus */ if (mysql_stmt_execute(stmt)) { fprintf(stderr, "\n mysql_stmt_execute failed"); fprintf(stderr, "\n %s", mysql_stmt_error(stmt)); exit(0); }
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.