hello world!

201阅读 0评论2008-10-15 lQR2h3N
分类:

  • 该结构代表1个库连接的句柄。几乎所有的MySQL函数均使用它。不应尝试拷贝MYSQL结构。不保证这类拷贝结果会有用。

  • MYSQL_RES

    该结构代表返回行的查询结果(SELECT,SHOW,DESCRIBE,EXPLAIN)。在本节的剩余部分,将查询返回的信息称为“结果集”。

  • MYSQL_ROW

    这是1行数据的“”表示。它目前是按照计数字节字符串的数组实施的。(如果字段值可能包含二进制数据,不能将其当作由Null终结的字符串对待,这是因为这类值可能会包含Null字节)。行是通过调用mysql_fetch_row()获得的。

  • MYSQL_FIELD

    该结构包含关于字段的信息,如字段名、类型和大小。这里详细介绍了其成员。通过重复调用mysql_fetch_field(),可为每个字段获得MYSQL_FIELD结构。字段值不是该结构的组成部份,它们包含在MYSQL_ROW结构中。

  • MYSQL_FIELD_OFFSET

    这是MySQL字段列表偏移量的“类型安全”表示(由mysql_field_seek()使用)。偏移量是行内的字段编号,从0开始。

  • my_ulonglong

    用于行数以及mysql_affected_rows()mysql_num_rows()mysql_insert_id()的类型。该类型提供的范围为01.84e19

    在某些上,不能打印类型my_ulonglong的值。要想打印这类值,请将其转换为无符号长整数类型并使用%lu打印格式,例如:

    printf ("Number of rows: %lu\n", (unsigned long) mysql_num_rows(result));
  • 下面列出了MYSQL_FIELD结构包含的成员:

    ·         char * name

    字段名称,由Null终结的字符串。如果用AS子句为该字段指定了别名,名称的值也是别名。

    ·         char * org_name

    段名称,由Null终结的字符串。忽略别名。

    ·         char * table

    包含该字段的表的名称,如果该字段不是计算出的字段的话。对于计算出的字段,表值为空的字符串。如果用AS子句为该表指定了别名,表的值也是别名。

    ·         char * org_table

    表的名称,由Null终结的字符串。忽略别名。

    ·         char * db

    字段源自的数据的名称,由Null终结的字符串。如果该字段是计算出的字段,db为空的字符串。

    ·         char * catalog

    catalog名称。该值总是"def"

    ·         char * def

    该字段的默认值,由Null终结的字符串。仅当使用mysql_list_fields()时才它。

    ·         unsigned long length

    字段的宽度,如表定义中所指定的那样。

    ·         unsigned long max_length

    用于结果集的字段的最大宽度(对于实际位于结果集中的行,最长字段值的长度)。如果使用mysql_store_result()mysql_list_fields(),它将包含字段的最大长度。如果使用mysql_use_result(),该变量的值为0

    ·         unsigned int name_length

    名称的长度。

    ·         unsigned int org_name_length

    org_name的长度。

    ·         unsigned int table_length

    表的长度。

    ·         unsigned int org_table_length

    org_table的长度。

    ·         unsigned int db_length

    db的长度。

    ·         unsigned int catalog_length

    catalog的长度。

    ·         unsigned int def_length

    def的长度。

    ·         unsigned int flags

    用于字段的不同“位标志”。标志的值可以有0个或多个下述位集合:

    标志值

    标志描述

    NOT_NULL_FLAG

    字段不能为NULL

    PRI_KEY_FLAG

    字段是主键的组成部分

    UNIQUE_KEY_FLAG

    字段是唯一键的组成部分

    MULTIPLE_KEY_FLAG

    字段是非唯一键的组成部分

    UNSIGNED_FLAG

    字段具有UNSIGNED属性

    ZEROFILL_FLAG

    字段具有ZEROFILL属性

    BINARY_FLAG

    字段具有BINARY属性

    AUTO_INCREMENT_FLAG

    字段具有AUTO_INCREMENT属性

    ENUM_FLAG

    字段是ENUM(不再重视)

    SET_FLAG

    字段是SET(不再重视)

    BLOB_FLAG

    字段是BLOBTEXT(不再重视)

    TIMESTAMP_FLAG

    字段是TIMESTAMP(不再重视)

    不再重视BLOB_FLAGENUM_FLAGSET_FLAGTIMESTAMP_FLAG标志,原因在于,它们指出了字段的类型,而不是类型的属性。更可取的方式是使用MYSQL_TYPE_BLOBMYSQL_TYPE_ENUMMYSQL_TYPE_SETMYSQL_TYPE_TIMESTAMP测试field->type

    在下面的示例中,介绍了标志值的典型用法:

    if (field->flags & NOT_NULL_FLAG)
         printf("Field can't be null\n");

    可以使用下述方面的宏来定义标志值的布尔状态:

    标志状态

    描述

    IS_NOT_NULL(flags)

    如果该字段定义为NOT NULL,为

    IS_PRI_KEY(flags)

    如果该字段是主键,为

    IS_BLOB(flags)

    如果该字段是BLOBTEXT,为(不再重视,用测试field->type取而代之)。

    ·         unsigned int decimals

    用于数值字段的十进制数数目。

    ·         unsigned int charset_nr

    用于字段的字符集编号。

    ·         enum enum_field_types type

    字段的类型。类型值可以是下标所列的MYSQL_TYPE_符号之一:

    类型值

    类型描述

    MYSQL_TYPE_TINY

    TINYINT字段

    MYSQL_TYPE_SHORT

    SMALLINT字段

    MYSQL_TYPE_LONG

    INTEGER字段

    MYSQL_TYPE_INT24

    MEDIUMINT字段

    MYSQL_TYPE_LONGLONG

    BIGINT字段

    MYSQL_TYPE_DECIMAL

    DECIMALNUMERIC字段

    MYSQL_TYPE_NEWDECIMAL

    精度数学DECIMALNUMERIC

    MYSQL_TYPE_FLOAT

    FLOAT字段

    MYSQL_TYPE_DOUBLE

    DOUBLEREAL字段

    MYSQL_TYPE_BIT

    BIT字段

    MYSQL_TYPE_TIMESTAMP

    TIMESTAMP字段

    MYSQL_TYPE_DATE

    DATE字段

    MYSQL_TYPE_TIME

    TIME字段

    MYSQL_TYPE_DATETIME

    DATETIME字段

    MYSQL_TYPE_YEAR

    YEAR字段

    MYSQL_TYPE_STRING

    CHAR字段

    MYSQL_TYPE_VAR_STRING

    VARCHAR字段

    MYSQL_TYPE_BLOB

    BLOBTEXT字段(使用max_length来确定最大长度)

    MYSQL_TYPE_SET

    SET字段

    MYSQL_TYPE_ENUM

    ENUM字段

    MYSQL_TYPE_GEOMETRY

    Spatial字段

    MYSQL_TYPE_NULL

    NULL-type字段

    MYSQL_TYPE_CHAR

    不再重视,用MYSQL_TYPE_TINY取代

    可以使用IS_NUM()宏来测试字段是否具有数值类型。将类型值传递给IS_NUM()如果字段为数值类型,会将其评估为“真”:

    if (IS_NUM(field->type))
         printf("Field is numeric\n");


    --------------------next---------------------

    上一篇:hello world!
    下一篇:hello world!