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

4

2 に答える 2

0

準備済みステートメントを使用している場合は、MYSQL_BIND配列を準備するために、各フィールドの型とサイズを正確に知っている必要があります

次のコード スニペットはドキュメントから取得したものです。

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];
于 2012-08-21T05:11:50.757 に答える
-1

列値のフェッチに使用される MYSQL_BIND 構造に変数をバインドする前に、結果セットの各列の型コードを確認できます。これは、型変換を回避するためにどの変数型を使用するのが最適かを判断する場合に望ましい場合があります。タイプ コードを取得するには、mysql_stmt_execute() で準備済みステートメントを実行した後、mysql_stmt_result_metadata() を呼び出します。メタデータは、セクション22.9.7.23「mysql_stmt_result_metadata()」およびセクション22.9.1「C API データ構造」で説明されているように、結果セットの型コードへのアクセスを提供します。

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

于 2012-08-21T04:54:56.883 に答える