首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL C API:从`MYSQL_STMT`获取`MYSQL_FIELD`数组?

问MySQL C API:从`MYSQL_STMT`获取`MYSQL_FIELD`数组?
EN

Stack Overflow用户
提问于 2012-08-21 04:31:29
回答 2查看 893关注 0票数 0

我已经准备并执行了一个MYSQL_STMT,现在我想要获取数据。

我可以用mysql_stmt_field_count得到字段的数目。

我需要知道每个字段的MYSQL_FIELD信息。

如何获取MYSQL_FIELD信息?

在field中有一个MYSQL_FIELD*类型的MYSQL_STMT成员,但手册中写着:

MYSQL_STMT结构没有用于应用程序的成员。

有几个函数采用MYSQL_RES,如mysql_fetch_fields,但我没有MYSQL_RES,有MYSQL_STMT

文档在这里:http://dev.mysql.com/doc/refman/5.5/en/c.html

EN

回答 2

Stack Overflow用户

发布于 2012-08-21 05:11:50

如果您正在使用准备语句,您应该准确地知道每个字段的类型和大小,以便准备MYSQL_BIND数组。

下面的代码片段摘自文档

代码语言:javascript
复制
MYSQL_BIND    bind[4]; // 4 columns
MYSQL_TIME    ts;
unsigned long length[4];
int           param_count, column_count, row_count;
short         small_data;
int           int_data;
char          str_data[STRING_SIZE];
my_bool       is_null[4];
my_bool       error[4];

/* Bind the result buffers for all 4 columns before fetching them */

memset(bind, 0, sizeof(bind));

/* INTEGER COLUMN */
bind[0].buffer_type= MYSQL_TYPE_LONG;
bind[0].buffer= (char *)&int_data;
bind[0].is_null= &is_null[0];
bind[0].length= &length[0];
bind[0].error= &error[0];

/* STRING COLUMN */
bind[1].buffer_type= MYSQL_TYPE_STRING;
bind[1].buffer= (char *)str_data;
bind[1].buffer_length= STRING_SIZE;
bind[1].is_null= &is_null[1];
bind[1].length= &length[1];
bind[1].error= &error[1];

/* SMALLINT COLUMN */
bind[2].buffer_type= MYSQL_TYPE_SHORT;
bind[2].buffer= (char *)&small_data;
bind[2].is_null= &is_null[2];
bind[2].length= &length[2];
bind[2].error= &error[2];

/* TIMESTAMP COLUMN */
bind[3].buffer_type= MYSQL_TYPE_TIMESTAMP;
bind[3].buffer= (char *)&ts;
bind[3].is_null= &is_null[3];
bind[3].length= &length[3];
bind[3].error= &error[3];
票数 0
EN

Stack Overflow用户

发布于 2012-08-21 04:54:56

在将变量绑定到用于获取列值的MYSQL_BIND结构之前,可以检查结果集中每一列的类型代码。如果您想确定最好使用哪种变量类型来避免类型转换,这可能是可取的。要获得类型代码,在使用mysql_stmt_result_metadata()执行准备好的语句后调用mysql_stmt_execute()。元数据提供对结果集类型代码的访问,如22.9.7.23节“mysql_stmt_result_metadata()”和22.9.1节“Data数据结构”所述。

http://dev.mysql.com/doc/refman/5.5/en/mysql-stmt-result-metadata.html

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12048468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档