mysql_stmt_send_long_data_mysql_stmt_send_long_data()

mysql_stmt_send_long_data()

my_bool

mysql_stmt_send_long_data(MYSQL_STMT *stmt, unsigned int

parameter_number, const char *data, unsigned long length)

描述

允许应用程序分段地(分块)将参数数据发送到服务器。可以多次调用该函数,以便发送关于某一列的字符或二进制数据的不同部分,列必须是TEXT或BLOB数据类型之一。

“parameter_number”指明了与数据关联的参数。参数从0开始编号。“data”是指向包含将要发送的数据的缓冲区的指针,“length”指明了缓冲区内的字节数。

注释:自上一个mysql_stmt_execute()或mysql_stmt_reset()后,对于与mysql_stmt_send_long_data()一起使用的所有参数,下一个mysql_stmt_execute()调用将忽略绑定缓冲。

如果希望复位/忽略已发送的数据,可使用mysql_stmt_reset()。请参见25.2.7.21节,“mysql_stmt_reset()”。

返回值

如果成功地将数据发送到服务器,返回0。如果出现错误,返回非0值。

错误

·CR_COMMANDS_OUT_OF_SYNC

以不恰当的顺序执行了命令。

·CR_SERVER_GONE_ERROR

MySQL服务器不可用。

·CR_OUT_OF_MEMORY

内存溢出。

·CR_UNKNOWN_ERROR

出现未知错误。

示例:

在下面的示例中,介绍了以信息块形式为TEXT列发送数据的方法。它会将数据值“MySQL,最流行的开放源码数据库”插入到text_column列中。假定mysql变量具有有效的连接句柄。

#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;

/* 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);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值