PDF(美国LTR)- 1.1MB.
PDF(A4)- 1.1MB.
HTML下载(TGZ)- 147.1KB.
HTML下载(ZIP)- 156.8KB.
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_packet.
系统变量控制可以发送的参数值的最大大小mysql_stmt_send_long_data()
。
该参数没有字符串或二进制类型。
参数编号无效。
命令以不正当的顺序执行。
MySQL Server已经消失了。
内存不足。
出现未知错误。
以下示例演示了如何发送数据文本
块中的列。它插入数据值'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); }