6.4.26 mysql_stmt_send_long_data()

my_bool mysql_stmt_send_long_data(mysql_stmt * stmt,unsigned int parameter_number,const char *数据,无符号长长度)

描述

使应用程序能够以碎片中的服务器向服务器发送参数数据(或)。之后调用这个函数mysql_stmt_bind_param()之前mysql_stmt_execute()。可以多次调用它来发送列的字符或二进制数据值的部分,这必须是其中一个文本或者斑点数据类型。

parameter_number.表示将数据关联的哪个参数。参数以0开始编号。数据是指向包含要发送的数据的缓冲区的指针,以及长度表示缓冲区中的字节数。

笔记

下一个mysql_stmt_execute()呼叫忽略已使用的所有参数的绑定缓冲区mysql_stmt_send_long_data()自上次以来mysql_stmt_execute()或者mysql_stmt_reset()

重置/忘记已发送的数据,调用mysql_stmt_reset()。看第6.4.22节“mysql_stmt_reset()”

max_allowed_pa​​cket.系统变量控制可以发送的参数值的最大大小mysql_stmt_send_long_data()

返回值

成功零。非零如果发生错误。

错误

例子

以下示例演示了如何发送数据文本块中的列。它插入数据值'mysql - 最受欢迎的开源数据库'进入text_column.柱子。这mysql.变量被认为是有效的连接处理程序。

#define insert_query“插入到\ test_long_data(text_column)值(?)”mysql_bind绑定[1];长长;stmt = mysql_stmt_init(mysql);如果(!stmt){fprintf(stderr,“mysql_stmt_init(),内存\ n”);退出(0);}如果(mysql_stmt_prepare(stmt,stord_query,strlen(插入_query)))){fprintf(stderr,“\ n mysql_stmt_prepare(),插入失败”);fprintf(stderr,“\ n%s”,mysql_stmt_error(stmt));退出(0);Memset(绑定,0,sizeof(绑定));绑定[0] .buffer_type = mysql_type_string; bind[0].length= &length; bind[0].is_null= 0; /* Bind the buffers */ if (mysql_stmt_bind_param(stmt, bind)) { fprintf(stderr, "\n param bind failed"); fprintf(stderr, "\n %s", mysql_stmt_error(stmt)); exit(0); } /* Supply data in chunks to 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); } /* Supply the next piece of data */ 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); } /* Now, execute the query */ if (mysql_stmt_execute(stmt)) { fprintf(stderr, "\n mysql_stmt_execute failed"); fprintf(stderr, "\n %s", mysql_stmt_error(stmt)); exit(0); }