常用APImysql_init()MYSQL *mysql_init(MYSQL *mysql) 描述 mysql_real_connect()MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag) 描述
注意:调用mysql_real_connect()之前,不要尝试加密密码,密码加密将由客户端API自动处理。
返回值 mysql_close()void mysql_close(MYSQL *mysql) 描述 返回值 错误 mysql_num_fields()unsigned int mysql_num_fields(MYSQL_RES *result) 要想传递MYSQL*参量取而代之,请使用无符号整数mysql_field_count(MYSQL *mysql)。 描述 注意,你可以从指向结果集的指针或指向连接句柄的指针获得行数。如果mysql_store_result()或mysql_use_result()返回NULL,应使用连接句柄(因而没有结果集指针)。在该情况下,可调用mysql_field_count()来判断mysql_store_result()是否生成了非空结果。这样,客户端程序就能采取恰当的行动,而不需要知道查询是否是SELECT语句(或类似SELECT的语句)。在下面的示例中,介绍了执行该操作的方式。 mysql_fetch_fields()MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *result) 描述 返回值 错误 mysql_fetch_row()MYSQL_ROW mysql_fetch_row(MYSQL_RES *result) 描述 行内值的数目由mysql_num_fields(result)给出。如果行中保存了调用mysql_fetch_row()返回的值,将按照row[0]到row[mysql_num_fields(result)-1],访问这些值的指针。行中的NULL值由NULL指针指明。 可以通过调用mysql_fetch_lengths()来获得行中字段值的长度。对于空字段以及包含NULL的字段,长度为0。通过检查字段值的指针,能够区分它们。如果指针为NULL,字段为NULL,否则字段为空。 返回值 下一行的MYSQL_ROW结构。如果没有更多要检索的行或出现了错误,返回NULL。 错误 注意,在对mysql_fetch_row()的两次调用之间,不会复位错误。 · CR_SERVER_LOST 在查询过程中,与服务器的连接丢失。 · CR_UNKNOWN_ERROR 出现未知错误。 mysql_query()int mysql_query(MYSQL *mysql, const char *query) 描述 mysql_query()不能用于包含二进制数据的查询,应使用mysql_real_query()取而代之(二进制数据可能包含字符'\0’,mysql_query()会将该字符解释为查询字符串结束)。 返回值 如果查询成功,返回0。如果出现错误,返回非0值。 mysql_store_result()MYSQL_RES *mysql_store_result(MYSQL *mysql) 描述 对于其他查询,不需要调用mysql_store_result()或mysql_use_result(),但是如果在任何情况下均调用了mysql_store_result(),它也不会导致任何伤害或性能降低。通过检查mysql_store_result()是否返回0,可检测查询是否没有结果集(以后会更多)。 如果希望了解查询是否应返回结果集,可使用mysql_field_count()进行检查。请参见25.2.3.22节,“mysql_field_count()”。 mysql_store_result()将查询的全部结果读取到客户端,分配1个MYSQL_RES结构,并将结果置于该结构中。 如果查询未返回结果集,mysql_store_result()将返回Null指针(例如,如果查询是INSERT语句)。 如果读取结果集失败,mysql_store_result()还会返回Null指针。通过检查mysql_error()是否返回非空字符串,mysql_errno()是否返回非0值,或mysql_field_count()是否返回0,可以检查是否出现了错误。 如果未返回行,将返回空的结果集。(空结果集设置不同于作为返回值的空指针)。 一旦调用了mysql_store_result()并获得了不是Null指针的结果,可调用mysql_num_rows()来找出结果集中的行数。 可以调用mysql_fetch_row()来获取结果集中的行,或调用mysql_row_seek()和mysql_row_tell()来获取或设置结果集中的当前行位置。 一旦完成了对结果集的操作,必须调用mysql_free_result()。 返回值 具有多个结果的MYSQL_RES结果集合。如果出现错误,返回NULL。 错误 如果成功,mysql_store_result()将复位mysql_error()和mysql_errno()。 mysql_free_result()void mysql_free_result(MYSQL_RES *result) 描述 释放完成后,不要尝试访问结果集。 返回值 无。 错误 无。 常用结构体MYSQL该结构代表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()的类型。该类型提供的范围为0~1.84e19。 在某些系统上,不能打印类型my_ulonglong的值。要想打印这类值,请将其转换为无符号长整数类型并使用%lu打印格式,例如:
下面列出了MYSQL_FIELD结构包含的成员:
字段名称,由Null终结的字符串。如果用AS子句为该字段指定了别名,名称的值也是别名。
段名称,由Null终结的字符串。忽略别名。
包含该字段的表的名称,如果该字段不是计算出的字段的话。对于计算出的字段,表值为空的字符串。如果用AS子句为该表指定了别名,表的值也是别名。
表的名称,由Null终结的字符串。忽略别名。
字段源自的数据的名称,由Null终结的字符串。如果该字段是计算出的字段,db为空的字符串。
catalog名称。该值总是"def"。
该字段的默认值,由Null终结的字符串。仅当使用mysql_list_fields()时才设置它。
字段的宽度,如表定义中所指定的那样。
用于结果集的字段的最大宽度(对于实际位于结果集中的行,最长字段值的长度)。如果使用mysql_store_result()或mysql_list_fields(),它将包含字段的最大长度。如果使用mysql_use_result(),该变量的值为0。
名称的长度。
org_name的长度。
表的长度。
org_table的长度。
db的长度。
catalog的长度。
def的长度。
用于字段的不同“位标志”。标志的值可以有0个或多个下述位集合: |
|