関数リファレンス
   

関数

mysql_list_fields()
フィールド情報を取得する
   

書式

MYSQL_RES *mysql_list_fields(*mysql, const char *table, const char *wild)

MYSQL *mysql MYSQL構造体
const char *table テーブル名
const char *wild ワイルドカード設定

戻り値

成功時 MYSQL_RES 結果セット。エラーが発生した場合は NULL

エラー

CR_COMMANDS_OUT_OF_SYNC 不当な順にコマンドが実行された
CR_SERVER_GONE_ERROR MySQL サーバがいなくなった
CR_SERVER_LOST サーバへの接続がクエリ中に失われた
CR_UNKNOWN_ERROR 未知のエラーが発生した
   

機能

テーブルのフィールドなどを取得する関数

mysql_list_fields関数で取得したRESはmysql_fetch_field関数によりフィールド情報を取得することが出来ます。

mysql.hのMYSQL_FIELD構造体です。
typedef struct st_mysql_field {
    char *name; /* Name of column */
    char *table; /* Table of column if column was a field */
    char *def; /* Default value (set by mysql_list_fields) */
    enum enum_field_types type; /* Type of field.

    mysql_com.h for types */
    unsigned int length; /* Width of column */
    unsigned int max_length; /* Max width of selected set */
    unsigned int flags; /* Div flags */
    unsigned int decimals; /* Number of decimals in field */
} MYSQL_FIELD;

サンプルにもありますが、nameにフィールド名が入ります。
これは遠まわしなやり方かもしれません。mysql_query関数でselect文を発行すればresを取得しますが、それをmysql_fetch_field関数でフィールド情報を取得することが出来ます。

   

サンプル

//かねやんMySQLAdminより
// CListViewのカラムへ設定するサンプル
// myDataはmysql_real_connectでオープン済み
int i=0;
MYSQL_FIELD *fd;
MYSQL_RES *res;
LV_COLUMN listcol;

if(mysql_select_db(myData,"mysql") < 0)
      return;
if((res=mysql_list_fields(myData,"host",NULL))==NULL)
     return;

while(fd=mysql_fetch_field(res)){ 
    listcol.pszText = fd->name;
    listcol.cx = 100;
    listCtrl.InsertColumn(i,&listcol);
    i++;
}

Japanese MySQL Manualより抜粋