my_bool mysql_stmt_send_long_data(MYSQL_STMT *stmt,
unsigned int parameter_number, const char *data, unsigned long
length)
Description
Permet à une application d'envoyer des données par parties au serveur. Cette fonction doit être utilisée pour envoyer des caractères ou du contenu binaire par partie dans une colonne (qui sera de type TEXT ou BLOB), avec un type de caractère ou de données binaires.
Le paramètre data
est un pointeur sur un
buffer qui contient les données pour le paramètre,
représenté par parameter_number
. Le
paramètre length
indique la quantité de
données qui doit être envoyée, en octets.
Note : le prochain appel à
mysql_stmt_execute()
va ignorer les buffers
de variables de requêtes, pour tous les paramètres qui ont
été utilisé avec
mysql_stmt_send_long_data()
depuis le
dernier appel à mysql_stmt_execute()
ou
mysql_stmt_reset()
.
Si vous voulez remettre à zéro cette fonction, utilisez
mysql_stmt_reset()
. See
Section 24.2.7.21, « mysql_stmt_reset()
».
Valeurs retournées
Zéro si les données ont pu être envoyées au serveur. Non-nul si une erreur est survenue.
Erreurs
CR_COMMANDS_OUT_OF_SYNC
Commands were executed in an improper order : Les conmmandes ont été envoyées dans un ordre invalide.
CR_SERVER_GONE_ERROR
The MySQL server has gone away : le serveur MySQL s'est éteind.
CR_OUT_OF_MEMORY
Out of memory : plus de mémoire.
CR_UNKNOWN_ERROR
An unknown error occured : une erreur inconnue s'est produite.
Exemple
L'exemple ci-dessous explique comment envoyer des données par partie dans une colonne de type TEXT :
#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; /* Liaison des buffers */ if (mysql_stmt_bind_param(stmt, bind)) { fprintf(stderr, "\n param bind failed"); fprintf(stderr, "\n %s", mysql_stmt_error(stmt)); exit(0); } /* Envoi des données au serveur, par parties */ 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); } /* Envoi des données suivantes */ 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); } /* Exécution de la requête */ if (mysql_stmt_execute(stmt)) { fprintf(stderr, "\n mysql_stmt_execute failed"); fprintf(stderr, "\n %s", mysql_stmt_error(stmt)); exit(0); }
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.