unsigned int num_fields = mysql_num_fields(res);
MYSQL_FIELD *   fields = mysql_fetch_fields(res);

for( unsigned int i = 0; i < num_fields; i++)
{
            printf( "col:%d, name:%s, type:%d \n", i, fields[i].name, fields[i].type );          
        }当我的数据库中第一列是varchar型,第二列也是varchar型时的输出:col:0, name:account, type:253
col:1, name:data, type:18838320                            是一个未定义mysql type类型,如何得到每一列的类型呢?

解决方案 »

  1.   

    为什么不用MYSQL的系统表?里面有现成的数据
      

  2.   

    MYSQL的系统表,不好意思啊,我刚着手mysql,不知道什么是MYSQL的系统表
      

  3.   

    执行SQL语句:
    select COLUMN_NAME,COLUMN_TYPE from COLUMNS where TABLE_NAME='aa'
    看看结果
      

  4.   

    在你的.h文件中看一下这些常量Type Value             |Type Description
    MYSQL_TYPE_TINY        |TINYINT field
    MYSQL_TYPE_SHORT       |SMALLINT field
    MYSQL_TYPE_LONG        |INTEGER field
    MYSQL_TYPE_INT24       |MEDIUMINT field
    MYSQL_TYPE_LONGLONG    |BIGINT field
    MYSQL_TYPE_DECIMAL     |DECIMAL or NUMERIC field
    MYSQL_TYPE_NEWDECIMAL  |Precision math DECIMAL or NUMERIC
    MYSQL_TYPE_FLOAT       |FLOAT field
    MYSQL_TYPE_DOUBLE      |DOUBLE or REAL field
    MYSQL_TYPE_BIT         |BIT field
    MYSQL_TYPE_TIMESTAMP   |TIMESTAMP field
    MYSQL_TYPE_DATE        |DATE field
    MYSQL_TYPE_TIME        |TIME field
    MYSQL_TYPE_DATETIME    |DATETIME field
    MYSQL_TYPE_YEAR        |YEAR field
    MYSQL_TYPE_STRING      |CHAR or BINARY field
    MYSQL_TYPE_VAR_STRING  |VARCHAR or VARBINARY field
    MYSQL_TYPE_BLOB        |BLOB or TEXT field (use max_length to determine the maximum length)
    MYSQL_TYPE_SET         |SET field
    MYSQL_TYPE_ENUM        |ENUM field
    MYSQL_TYPE_GEOMETRY    |Spatial field
    MYSQL_TYPE_NULL        |NULL-type field
      

  5.   

    通过 mysql_fetch_field 方法得到的 MYSQL_FIELD 中有类型信息。MYSQL_FIELD * STDCALL mysql_fetch_field(MYSQL_RES *result);enum enum_field_types { MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY,
    MYSQL_TYPE_SHORT,  MYSQL_TYPE_LONG,
    MYSQL_TYPE_FLOAT,  MYSQL_TYPE_DOUBLE,
    MYSQL_TYPE_NULL,   MYSQL_TYPE_TIMESTAMP,
    MYSQL_TYPE_LONGLONG,MYSQL_TYPE_INT24,
    MYSQL_TYPE_DATE,   MYSQL_TYPE_TIME,
    MYSQL_TYPE_DATETIME, MYSQL_TYPE_YEAR,
    MYSQL_TYPE_NEWDATE, MYSQL_TYPE_VARCHAR,
    MYSQL_TYPE_BIT,
                            MYSQL_TYPE_NEWDECIMAL=246,
    MYSQL_TYPE_ENUM=247,
    MYSQL_TYPE_SET=248,
    MYSQL_TYPE_TINY_BLOB=249,
    MYSQL_TYPE_MEDIUM_BLOB=250,
    MYSQL_TYPE_LONG_BLOB=251,
    MYSQL_TYPE_BLOB=252,
    MYSQL_TYPE_VAR_STRING=253,
    MYSQL_TYPE_STRING=254,
    MYSQL_TYPE_GEOMETRY=255};
      

  6.   

    unsigned int num_fields = mysql_num_fields(res); 
    MYSQL_FIELD *  fields = mysql_fetch_fields(res); for( unsigned int i = 0; i < num_fields; i++) 

                printf( "col:%d, name:%s, type:%d \n", i, fields[i].name, fields[i].type );          
            } 当我的数据库中第一列是varchar型,第二列也是varchar型时的输出: col:0, name:account, type:253 
    col:1, name:data, type:18838320                            是一个未定义mysql type类型,如何得到每一列的类型呢? 
    呵呵,谢谢大家的回答,不过我还是不明白我这样写为什么会出错呢?