Maj*_*cRa 5 c mysql mysql-connector
当使用 MySQL C API 中的 Prepared Statements 来处理 TEXT 字段结果时,必须为 out 绑定指定字符串的长度:
MYSQL_BIND out_bind;
char str_data[STRING_SIZE];
my_bool is_null;
my_bool error;
....
/* STRING COLUMN */
out_bind.buffer_type = MYSQL_TYPE_STRING;
out_bind.buffer = str_data;
out_bind.buffer_length = STRING_SIZE;
out_bind.is_null= &is_null;
out_bind.length= &length;
out_bind.error= &error;
mysql_stmt_bind_result(statement, out_bind)
Run Code Online (Sandbox Code Playgroud)
在给定的示例中,STRING_SIZE 是已知常量,但如何处理数据长度从小到兆大小不等的 TEXT 字段?
有没有标准的方法呢?
在某些情况下,您可能希望在使用 mysql_stmt_fetch() 获取列值之前确定列值的长度。...为了实现这一点,您可以使用以下策略:
在调用
mysql_stmt_fetch()检索各个行之前,传递STMT_ATTR_UPDATE_MAX_LENGTH给mysql_stmt_attr_set(),然后调用mysql_stmt_store_result()以在客户端缓冲整个结果。设置该STMT_ATTR_UPDATE_MAX_LENGTH属性会导致列值的最大长度由max_length返回的结果集元数据的成员指示mysql_stmt_result_metadata()。使用
mysql_stmt_fetch()相关列的零长度缓冲区和可以存储实际长度的指针进行调用。然后使用实际长度mysql_stmt_fetch_column()。
您可能还想阅读手册页mysql_stmt_bind_result
| 归档时间: |
|
| 查看次数: |
2472 次 |
| 最近记录: |