Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Programming
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Databases
Mail Systems
openSolaris
Eclipse Documentation
Techotopia.com
Virtuatopia.com

How To Guides
Virtualization
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Windows
Problem Solutions

  




 

 

25.2.1. C API Data types

  • MYSQL

    This structure represents a handle to one database connection. It is used for almost all MySQL functions. You should not try to make a copy of a MYSQL structure. There is no guarantee that such a copy will be usable.

  • MYSQL_RES

    This structure represents the result of a query that returns rows (SELECT, SHOW, DESCRIBE, EXPLAIN). The information returned from a query is called the result set in the remainder of this section.

  • MYSQL_ROW

    This is a type-safe representation of one row of data. It is currently implemented as an array of counted byte strings. (You cannot treat these as null-terminated strings if field values may contain binary data, because such values may contain null bytes internally.) Rows are obtained by calling mysql_fetch_row().

  • MYSQL_FIELD

    This structure contains information about a field, such as the field's name, type, and size. Its members are described in more detail here. You may obtain the MYSQL_FIELD structures for each field by calling mysql_fetch_field() repeatedly. Field values are not part of this structure; they are contained in a MYSQL_ROW structure.

  • MYSQL_FIELD_OFFSET

    This is a type-safe representation of an offset into a MySQL field list. (Used by mysql_field_seek().) Offsets are field numbers within a row, beginning at zero.

  • my_ulonglong

    The type used for the number of rows and for mysql_affected_rows(), mysql_num_rows(), and mysql_insert_id(). This type provides a range of 0 to 1.84e19.

    On some systems, attempting to print a value of type my_ulonglong does not work. To print such a value, convert it to unsigned long and use a %lu print format. Example:

    printf ("Number of rows: %lu\n", (unsigned long) mysql_num_rows(result));
    

The MYSQL_FIELD structure contains the members listed here:

  • char * name

    The name of the field, as a null-terminated string. If the field was given an alias with an AS clause, the value of name is the alias.

  • char * org_name

    The name of the field, as a null-terminated string. Aliases are ignored.

  • char * table

    The name of the table containing this field, if it isn't a calculated field. For calculated fields, the table value is an empty string. If the table was given an alias with an AS clause, the value of table is the alias.

  • char * org_table

    The name of the table, as a null-terminated string. Aliases are ignored.

  • char * db

    The name of the database that the field comes from, as a null-terminated string. If the field is a calculated field, db is an empty string.

  • char * catalog

    The catalog name. This value is always "def".

  • char * def

    The default value of this field, as a null-terminated string. This is set only if you use mysql_list_fields().

  • unsigned long length

    The width of the field, as specified in the table definition.

  • unsigned long max_length

    The maximum width of the field for the result set (the length of the longest field value for the rows actually in the result set). If you use mysql_store_result() or mysql_list_fields(), this contains the maximum length for the field. If you use mysql_use_result(), the value of this variable is zero.

  • unsigned int name_length

    The length of name.

  • unsigned int org_name_length

    The length of org_name.

  • unsigned int table_length

    The length of table.

  • unsigned int org_table_length

    The length of org_table.

  • unsigned int db_length

    The length of db.

  • unsigned int catalog_length

    The length of catalog.

  • unsigned int def_length

    The length of def.

  • unsigned int flags

    Different bit-flags for the field. The flags value may have zero or more of the following bits set:

    Flag Value Flag Description
    NOT_NULL_FLAG Field can't be NULL
    PRI_KEY_FLAG Field is part of a primary key
    UNIQUE_KEY_FLAG Field is part of a unique key
    MULTIPLE_KEY_FLAG Field is part of a non-unique key
    UNSIGNED_FLAG Field has the UNSIGNED attribute
    ZEROFILL_FLAG Field has the ZEROFILL attribute
    BINARY_FLAG Field has the BINARY attribute
    AUTO_INCREMENT_FLAG Field has the AUTO_INCREMENT attribute
    ENUM_FLAG Field is an ENUM (deprecated)
    SET_FLAG Field is a SET (deprecated)
    BLOB_FLAG Field is a BLOB or TEXT (deprecated)
    TIMESTAMP_FLAG Field is a TIMESTAMP (deprecated)

    Use of the BLOB_FLAG, ENUM_FLAG, SET_FLAG, and TIMESTAMP_FLAG flags is deprecated because they indicate the type of a field rather than an attribute of its type. It is preferable to test field->type against MYSQL_TYPE_BLOB, MYSQL_TYPE_ENUM, MYSQL_TYPE_SET, or MYSQL_TYPE_TIMESTAMP instead.

    The following example illustrates a typical use of the flags value:

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

    You may use the following convenience macros to determine the boolean status of the flags value:

    Flag Status Description
    IS_NOT_NULL(flags) True if this field is defined as NOT NULL
    IS_PRI_KEY(flags) True if this field is a primary key
    IS_BLOB(flags) True if this field is a BLOB or TEXT (deprecated; test field->type instead)
  • unsigned int decimals

    The number of decimals for numeric fields.

  • unsigned int charset_nr

    The character set number for the field.

  • enum enum_field_types type

    The type of the field. The type value may be one of the MYSQL_TYPE_ symbols shown in the following table.

    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
    MYSQL_TYPE_CHAR Deprecated; use MYSQL_TYPE_TINY instead

    You can use the IS_NUM() macro to test whether a field has a numeric type. Pass the type value to IS_NUM() and it evaluates to TRUE if the field is numeric:

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

 
 
  Published under the terms of the GNU General Public License Design by Interspire