mysql-logo.gif (3082 bytes)MySQL���IJο��ֲ�


��һ��, ǰһ��, ��һ��, ����һ��


20 MySQL�ͻ����ߺ�API

20.1 MySQL C API

C API��������MySQL�ַ��ģ�����������mysqlclient��������C������ȡһ�����ݿ⡣

�� MySQLԴ�����ַ��еĺܶ��ͻ�����C��д�ġ�����������Ѱ����ʾ����ʹ��C API�����ӣ���һ����Щ�ͻ�������

�����������ͻ� API(����Java������)��ʹ��mysqlclient����MySQL������ͨ�š�����ζ�ţ����磬�������úܶ౻�����ͻ�����ʹ�õ�ͬһ������������Ϊ���Ǵӿ������á�����Щ������һ�ű�����12.1 ��ͬ��MySQL�����ĸ�����

�ͻ���һ������ͨѶ��������С����ʼ�����Ļ�������С(16K�ֽ�) �Զ������ӵ������ߴ�(ȱʡ������ֵ��24M)����Ϊ��������Сֻ�ǰ���֤�����������ӣ��򵥵�����ȱʡ���������Ʋ������ɸ��౻���ġ��óߴ�������Ҫ��һ���Դ����IJ�ѯ��ͨѶ���ļ��顣

ͨѶ�����������㹻���Ա�һ��������SQL����(�Կͻ�-����������)��һ�з��ص�����(�Է�����-�ͻ�����)��ÿ���̵߳�ͨѶ����������̬���������������������κβ�ѯ���С����磬��������������16M���ݵ�BLOBֵ����������һ������16MͨѶ����������(�ڷ������Ϳͻ�����)���ͻ���ȱʡ����ֵ��24M�������ڷ������˵�ȱʡ����ֵ��1M���������ڷ���������ʱͨ���ı�max_allowed_packet������ֵ���ı�������10.2.3 ���ڷ�����������

MySQL��������ÿ����ѯ����Сÿ��ͨѶ��������net_buffer_length���ֽڡ��Կͻ�����һ���������صĻ������Ĵ�Сû�����٣�ֱ�����ӱ��رգ��ڴ�ʱ�ͻ��ڴ汻���ա�

���������̵߳ı��̣���Ӧ����--with-thread-safe-client����MySQL C API���⽫ʹC API�̶߳�ÿ�����Ӹ���ȫ����������2���̹߳�����ͬ�����ӣ�ֻҪ���������������飺

�����̲߳���ͬʱ��ͬһ�������Ϸ��Ͳ�ѯ��MySQL���ر��������뱣֤��һ��mysql_query()��mysql_store_result()֮��û�������߳�����ʹ��ͬһ�����ӡ�
�����߳��ܴ�ȡ��mysql_store_result()���������IJ�ͬ�������ϡ�
������ʹ��mysql_use_result�������뱣֤û�������߳���ͬһ������������ѯ���κζ�����ֱ���������ϱ��رա�

20.2 C API��������

MYSQL
�����ṹ��ʾ��һ�����ݿ����ӵľ������������ڼ������е�MySQL������
MYSQL_RES
�����ṹ���������е�һ����ѯ��(SELECT, SHOW, DESCRIBE, EXPLAIN)�Ľ������Ӳ�ѯ���ص���Ϣ�ڱ������ij�Ϊ����������
MYSQL_ROW
����һ�������ݵ����Ͱ�ȫ(type-safe)�ı�ʾ����ǰ��ʵ��Ϊһ�������ֽڵ��ַ������顣�������ֶ�ֵ���ܰ������������ݣ��㲻�ܽ���Щ��Ϊ����ֹ������Ϊ������ֵ�������ڲ��������ֽ�) ��ͨ������mysql_fetch_row()���á�
MYSQL_FIELD
�����ṹ�����ֶ���Ϣ�������ֶ��������ͺʹ�С������Ա����������ϸ��������������ͨ���ظ�����mysql_fetch_field()��ÿһ�л���MYSQL_FIELD�ṹ���ֶ�ֵ���������ṹ�IJ��֣����DZ�������һ��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��ֵ����������Ϊ�˴�ӡ��������ֵ�������任��unsigned long����ʹ��һ��%lu��ӡ��ʽ�����磺
printf (Number of rows: %lu\n", (unsigned long) mysql_num_rows(result));

MYSQL_FIELD�ṹ�������������ij�Ա��

char * name
�ֶ�������һ���ս�β���ַ�����
char * table
�������ֶεı������֣����������ǿɼ������ֶΡ��Կɼ������ֶΣ�tableֵ��һ�����ַ�����
char * def
���ֶε�ȱʡֵ����һ���ս�β���ַ�����ֻҪ��ʹ�ã�ֻ����ʹ��mysql_list_fields()�ſ���������
enum enum_field_types type
�ֶ����͡�typeֵ����������֮һ��
����ֵ ���ͺ���
FIELD_TYPE_TINY TINYINT�ֶ�
FIELD_TYPE_SHORT SMALLINT�ֶ�
FIELD_TYPE_LONG INTEGER�ֶ�
FIELD_TYPE_INT24 MEDIUMINT�ֶ�
FIELD_TYPE_LONGLONG BIGINT�ֶ�
FIELD_TYPE_DECIMAL DECIMAL��NUMERIC�ֶ�
FIELD_TYPE_FLOAT FLOAT�ֶ�
FIELD_TYPE_DOUBLE DOUBLE��REAL�ֶ�
FIELD_TYPE_TIMESTAMP TIMESTAMP�ֶ�
FIELD_TYPE_DATE DATE�ֶ�
FIELD_TYPE_TIME TIME�ֶ�
FIELD_TYPE_DATETIME DATETIME�ֶ�
FIELD_TYPE_YEAR YEAR�ֶ�
FIELD_TYPE_STRING �ַ���(CHAR��VARCHAR)�ֶ�
FIELD_TYPE_BLOB BLOB��TEXT�ֶ�(ʹ��max_length�������󳤶ȣ�
FIELD_TYPE_SET SET�ֶ�
FIELD_TYPE_ENUM ENUM�ֶ�
FIELD_TYPE_NULL NULL- �����ֶ�
FIELD_TYPE_CHAR ���Ƽ���ʹ��FIELD_TYPE_TINY����

������ʹ��IS_NUM()���������ֶ��Ƿ���һ���������͡���typeֵ����IS_NUM()���������ֶ������ֵģ���������ΪTRUE��

if (IS_NUM(field->type))
    printf("Field is numeric\n");
unsigned int length
�ֶο��ȣ��ڱ�������ָ����
unsigned int max_length
�Խ������ϵ��ֶε���������(��ʵ���ڽ��������е��е���ֶ�ֵ�ij���)��������ʹ��mysql_store_result()��mysql_list_fields()���������ֶ����󳤶ȡ�������ʹ��mysql_use_result()������������ֵ���㡣
unsigned int flags
�ֶεIJ�ͬλ��־��flagsֵ��������������������λ���ã�
��־ֵ ��־����
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�����Ƽ���
BLOB_FLAG �ֶ���һ��BLOB��TEXT�����Ƽ���
TIMESTAMP_FLAG �ֶ���һ��TIMESTAMP�����Ƽ���

BLOB_FLAG��ENUM_FLAG��TIMESTAMP_FLAG��־��ʹ���Dz��Ƽ��ģ���Ϊ����ָ���ֶε����Ͷ��������������ԡ���FIELD_TYPE_BLOB��FIELD_TYPE_ENUM��FIELD_TYPE_TIMESTAMP�������Dz���field->type������������ʾ��һ�����͵�flagsֵ�÷���

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

������ʹ�����з����ĺ�����ȷ��flagsֵ�IJ���״̬��

IS_NOT_NULL(flags) �棬�������ֶα�����ΪNOT NULL
IS_PRI_KEY(flags) �棬�������ֶ���һ������
IS_BLOB(flags) �棬�������ֶ���һ��BLOB��TEXT�����Ƽ����෴����field->type��
unsigned int decimals
�������ֶε�С��λ����

20.3 C API��������

�� C API �п��õĺ����������棬��������һ�ڸ���ϸ����������20.4 C API����������

mysql_affected_rows() ���ر����µ�UPDATE, DELETE��INSERT��ѯӰ����������
mysql_close() �ر�һ�����������ӡ�
mysql_connect() ����һ��MySQL���������ú������Ƽ���ʹ��mysql_real_connect()���档
mysql_change_user() �ı���һ���򿪵������ϵ��û������ݿ⡣
mysql_create_db() ����һ�����ݿ⡣�ú������Ƽ�����ʹ��SQL����CREATE DATABASE��
mysql_data_seek() ��һ����ѯ������������Ѱһ�����С�
mysql_debug() �ø����ַ�����һ��DBUG_PUSH��
mysql_drop_db() ����һ�����ݿ⡣�ú������Ƽ�����ʹ��SQL����DROP DATABASE��
mysql_dump_debug_info() �÷�������������Ϣд����־�ļ���
mysql_eof() ȷ���Ƿ��Ѿ�����һ���������ϵ�����һ�С��⹦�ܱ�����; mysql_errno()��mysql_error()�����෴��ʹ�á�
mysql_errno() �������������õ�MySQL�����ij������š�
mysql_error() �������������õ�MySQL�����ij�����Ϣ��
mysql_escape_string() ����SQL�����е��ַ�����ת�������ַ���
mysql_fetch_field() ������һ�����ֶε����͡�
mysql_fetch_field_direct () ����һ�����ֶε����ͣ�����һ���ֶα��š�
mysql_fetch_fields() ����һ�������ֶνṹ�����顣
mysql_fetch_lengths() ���ص�ǰ���������еij��ȡ�
mysql_fetch_row() �ӽ���������ȡ����һ�С�
mysql_field_seek() ���й�������һ��ָ�������ϡ�
mysql_field_count() ����������ѯ�Ľ����е�������
mysql_field_tell() ������������һ��mysql_fetch_field()���ֶι�����λ�á�
mysql_free_result() �ͷ�һ����������ʹ�õ��ڴ档
mysql_get_client_info() ���ؿͻ��汾��Ϣ��
mysql_get_host_info() ����һ���������ӵ��ַ�����
mysql_get_proto_info() ��������ʹ�õ�Э���汾��
mysql_get_server_info() ���ط������汾�š�
mysql_info() ���ع�������ִ�еò�ѯ����Ϣ��
mysql_init() ���û���ʼ��һ��MYSQL�ṹ��
mysql_insert_id() ������ǰһ����ѯΪһ��AUTO_INCREMENT�����ɵ�ID��
mysql_kill() ɱ��һ���������̡߳�
mysql_list_dbs() ����ƥ��һ���򵥵���������ʽ�����ݿ�����
mysql_list_fields() ����ƥ��һ���򵥵���������ʽ��������
mysql_list_processes() ���ص�ǰ�������̵߳�һ�ű���
mysql_list_tables() ����ƥ��һ���򵥵���������ʽ�ı�����
mysql_num_fields() ����һ�����������ص��е�������
mysql_num_rows() ����һ�����������е��е�������
mysql_options() ���ö�mysql_connect()������ѡ�
mysql_ping() �����Է������������Ƿ����ڹ�������Ҫʱ�������ӡ�
mysql_query() ִ��ָ��Ϊһ���ս�β���ַ�����SQL��ѯ��
mysql_real_connect() ����һ��MySQL��������
mysql_real_query() ִ��ָ��Ϊ���������ַ�����SQL��ѯ��
mysql_reload() ���߷�������װ��Ȩ����
mysql_row_seek() �����ڽ��������е��У�ʹ�ô�mysql_row_tell()���ص�ֵ��
mysql_row_tell() �����й���λ�á�
mysql_select_db() ����һ�����ݿ⡣
mysql_shutdown() �ص����ݿ���������
mysql_stat() ������Ϊ�ַ����ķ�����״̬��
mysql_store_result() ����һ�������Ľ������ϸ��ͻ���
mysql_thread_id() ���ص�ǰ�̵߳�ID��
mysql_use_result() ��ʼ��һ��һ��һ�еؽ������ϵļ�����

Ϊ�����ӷ�����������mysql_init()�Գ�ʼ��һ�����Ӵ�������Ȼ���øô���������mysql_real_connect()(����������Ϣ�������������û����Ϳ���)�������ø��������ɹ����󣬵���mysql_close()��ֹ����

��һ�����ӻ�Ծʱ���ͻ�������mysql_query()��mysql_real_query()��SQL��ѯ���͵������������ߵIJ�����mysql_query()������ѯ��Ϊһ���ս�β���ַ�����ָ����mysql_real_query()����һ���������ַ����������ַ�����������������(�����԰������ֽ�)��������ʹ��mysql_real_query()��

����ÿ����--SELECT��ѯ(���磬INSERT��UPDATE��DELETE��)�������Ե���mysql_affected_rows()֪���ж������ܵ�Ӱ��(�ı�)��

����SELECT��ѯ������Ϊһ����������������ѡ�����С���ע��һЩ��������SELECT�ģ����Ƿ����С���Щ����SHOW��DESCRIBE��EXPLAIN������Ӧ����SELECT������ͬ�ķ�ʽ���Դ�����

�Կͻ��������ַ��������������ϡ�һ�ַ�����ͨ������mysql_store_result()���̼���ȫ���������ú����ӷ��������ò�ѯ���ص������У��������Ǵ洢�ڿͻ��ˡ��ڶ��ַ����ǶԿͻ�ͨ������mysql_use_result()��ʼ��һ��һ��һ�еؽ������ϵļ������ú�����ʼ������������ʵ���ϲ��ӷ����������κ��С�

�����������У���ͨ��mysql_fetch_row()��ȡ�С���mysql_store_result()��mysql_fetch_row()����ȡ�Ѿ��ӷ�������ȡ�����С���mysql_use_result()��mysql_fetch_row()ʵ���ϴӷ����������С�����mysql_fetch_lengths()�ɻ��ù���ÿ��������ֵ�ߴ�����Ϣ��

��������һ�����������Ժ󣬵���mysql_free_result()�ͷ�����ʹ�õ��ڴ档

���ּ��������ǻ����ġ��ͻ�����Ӧ��ѡ�����ʺ����ǵ�Ҫ����;������ʵ���У��ͻ�ͨ����Ը��ʹ��mysql_store_result()��

mysql_store_result()��һ���ŵ��Ǽ�Ȼ�о����ͻ�ȡ�����㲻����˳����ȡ�У���Ҳ��mysql_data_seek()��mysql_row_seek()�ڽ���������ǰ���ƶ��Ըı��ڽ��������еĵ�ǰ��λ�á���Ҳ��ͨ������mysql_num_rows()֪���ж����С���һ���棬mysql_store_result()���ڴ������Խϴ��������Ͽ��ܸܺߣ�����������������out-of-memory������

mysql_use_result()��һ���ŵ��ǿͻ�Ϊ����������Ҫ���ٵ��ڴ棬��Ϊ��һ��ֻ��ά��һ��(������Ϊ�н��ٵķ��俪����mysql_use_result()�ܸ���Щ)��ȱ���������뾡�촦��ÿһ���Ա�����ס���������㲻���ٽ���������������ȡ��(��ֻ��˳����ȡ��)�������㲻֪���ڽ����������ж����У�ֱ��������ȫ�����������У������������������У���ʹ���ڼ�����;ȷ�������ҵ�����Ѱ�ҵ���Ϣ��

APIʹ�ÿͻ���ȷӦ����ѯ��Ϊ����(��������Ҫ����)������֪����ѯ�Ƿ���һ��SELECT��������ͨ����mysql_query()����mysql_real_query())֮������mysql_store_result()�����������������ϵ��óɹ����Ҳ�ѯ��һ��SELECT�����ܶ�ȡ�С������������ϵ��ã�����mysql_field_count()ȷ�������Ƿ���ʵ�������ġ�����mysql_field_count()����0����ѯû�з�������(��������һ��INSERT��UPDATE��DELETE��)�����Բ����������С�����mysql_field_count()�Ƿ��㣬��ѯӦ���з����У�����û�С���������ѯ��һ��ʧ�ܵ�SELECT����mysql_field_count()���������������ӵ�������

mysql_store_result()��mysql_use_result()�������������й����ɽ������ϵ��ֶε���Ϣ(�ֶ����������ǵ����ֺ����͵ȵ�)��������ͨ���ظ�����mysql_fetch_field()������˳����ȡ�ֶ���Ϣ��������mysql_fetch_field_direct()��ȡ���е��ֶα��š���ǰ�ֶι���λ�ÿ���ͨ������mysql_field_seek()�ı䣬�����ֶι���Ӱ�쵽����mysql_fetch_field()���á���Ҳ��ͨ������mysql_fetch_fields()���ϻ����ֶ���Ϣ��

���ڼ����ͱ���������MySQL������mysql_errno()��mysql_error()�����ṩ������Ϣ�Ĵ�ȡ�����Ƿ����������õĿ��ܳɹ���ʧ�ܵĺ����Ĵ���������������Ϣ��������ȷ����ʱ����һ��������ʲô������

20.4 C API��������

�������������У�һ��NULL�����򷵻�ֵ��������C�������Ի�����NULL������һ��MySQL NULLֵ��

����һ��ֵ�ĺ���һ�㷵��һ��ָ����һ����������������ָ��������һ��ָ���ĺ�������һ���� NULLֵ�����ɹ�����һ��NULLֵ����һ�����󣬶�����һ�������ĺ�����������ʾ�ɹ�����������ʾһ��������ע�⣬�����㡱ֻ���������塣���Ǻ�����������˵������Ҫ����һ��������������ֵ��

if (result)                   /* ��ȷ */
    ... error ...

if (result < 0)               /* ����ȷ */
    ... error ...

if (result == -1)             /* ����ȷ */
    ... error ...

����������һ������ʱ����������������С���г��������ܵ����͡������Ե���mysql_errno()�ҳ���������Щ�ص���һ�����������ַ�����ʾ���Ե���mysql_error()���á�

20.4.1 mysql_affected_rows()

my_ulonglong mysql_affected_rows(MYSQL *mysql)

20.4.1.1 ˵��

�����ܵ�����һ��UPDATE��DELETE��INSERT��ѯӰ��(�仯)������������������UPDATE��DELETE��INSERT������mysql_query()֮���������á�����SELECT���䣬mysql_affected_rows()�Ĺ�����mysql_num_rows()��ͬ��

mysql_affected_rows()Ŀǰ��һ����(macro)��ʵ�֡�

20.4.1.2 ����ֵ

��������һ��������ʾ�ܵ�Ӱ������������������������ʾû��ƥ��������WHERE�Ӿ��ļ�¼��Ŀǰ��û�в�ѯ��ִ�С�-1��ʾ��ѯ����һ�����󣬻�����һ��SELECT��ѯ��mysql_affected_rows()�ڵ���mysql_store_result()֮ǰ�����á�

20.4.1.3 ����

û�С�

20.4.1.4 ����

mysql_query(&mysql,"UPDATE products SET cost=cost*1.25 WHERE group=10");
printf("%d products updated",mysql_affected_rows(&mysql));
 

20.4.2 mysql_close()

void mysql_close(MYSQL *mysql)

20.4.2.1 ˵��

�ر�һ����ǰ�����˵����ӡ�����������mysql_init()��mysql_connect()�Զ����䣬mysql_close()Ҳ�ͷű�mysqlָ�������Ӿ�����

20.4.2.2 ����ֵ

û�С�

20.4.2.3 ����

CR_COMMANDS_OUT_OF_SYNC
������һ������ȷ�Ĵ�����ִ�С�
CR_SERVER_GONE_ERROR
MySQL�������ر��ˡ�
CR_SERVER_LOST
�Է����ߵ������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����

20.4.3 mysql_connect()

MYSQL *mysql_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd)

20.4.3.1 ˵��

�ú������Ƽ�ʹ�ã�������ʹ��mysql_real_connect()��

mysql_connect()��ͼ����һ����������host��һ��MySQL���ݿ����������ӡ�mysql_connect()����������ִ������API����֮ǰ�ɹ������ɣ�����mysql_get_client_info()��

�����ĺ�����mysql_connect()��Ӧ�IJ�����ͬ����ͬ�������Ӳ���������NULL�������������£�C API �Զ�Ϊ���ӽṹ�����ڴ棬���ҵ�������mysql_close()���ͷ��������ַ�����ȱ������������ʧ�ܣ��㲻�ܼ�����һ��������Ϣ����Ϊ�˴�mysql_errno()��mysql_error()�õ�������Ϣ���������ṩһ����Ч��MYSQLָ�롣��

20.4.3.2 ����ֵ

ͬmysql_real_connect()��

20.4.3.3 ����

ͬmysql_real_connect()��

20.4.4mysql_change_user()

my_bool mysql_change_user(MYSQL *mysql, const char *user, const char *password, const char *db)

20.4.4.1 ˵��

�ı��û�����ʹ����dbָ�����ݿ���Ϊ��mysqlָ���������ϵ�ȱʡ(��ǰ)���ݿ⡣�������IJ�ѯ�У��������ݿ��Dz�����һ����ȷ�����ݿ�ָ�����ı����õ�ȱʡֵ��

��������������MySQL 3.23.3�����롣

�������ӵ��û��ܱ���֤��������û��Ȩ��ʹ�����ݿ⣬mysql_change_user()ʧ�ܡ������������£��û������ݿⶼû���ı䡣

�����㲻����һ��ȱʡ���ݿ⣬db�������Ա�����ΪNULL��

20.4.4.2 ����ֵ

�ɹ����㡣��������һ���������������㡣

20.4.4.3 ����

�����ܴ�mysql_real_connect()�õ�����ͬ��

CR_COMMANDS_OUT_OF_SYNC
������һ������ȷ�Ĵ�����ִ�С�
CR_SERVER_GONE_ERROR
MySQL�����߹ر��ˡ�
CR_SERVER_LOST
�Է����ߵ������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����
ER_UNKNOWN_COM_ERROR
MySQL������δʵ����������(������һ���ϵķ�������
ER_ACCESS_DENIED_ERROR
�û�������������
ER_BAD_DB_ERROR
���ݿⲻ���ڡ�
ER_DBACCESS_DENIED_ERROR
�û�û�����ݿ��Ĵ�ȡȨ����
ER_WRONG_DB_NAME
���ݿ�����̫����

20.4.4.4 ����

if (mysql_change_user(&mysql, "user", "password", "new_database"))
{
   fprintf(stderr, "Failed to change user.  Error: %s\n",
           mysql_error(&mysql));
}
 

20.4.5 mysql_create_db()

int mysql_create_db(MYSQL *mysql, const char *db)

20.4.5.1 ˵��

������db�������������ݿ⡣

�����������Ƽ���������ʹ��mysql_query()����һ��SQL CREATE DATABASE���䡣

20.4.5.2 ����ֵ

�������ݿ��ɹ��ر����죬�㡣��������һ�����󣬷��㡣

20.4.5.3 ����

CR_COMMANDS_OUT_OF_SYNC
������һ������ȷ�Ĵ�����ִ�С�
CR_SERVER_GONE_ERROR
MySQL�������ر��ˡ�
CR_SERVER_LOST
�Է����ߵ������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ����� 

20.4.5.4 ����

if(mysql_create_db(&mysql, "my_database"))
{
   fprintf(stderr, "Failed to create new database.  Error: %s\n",
           mysql_error(&mysql));
}
 

20.4.6 mysql_data_seek()

void mysql_data_seek(MYSQL_RES *result, unsigned long long offset)

20.4.6.1 ˵��

��һ����ѯ���������ж�λ�����С���Ҫ���������Ͻṹ������ѯ��ȫ������������mysql_data_seek()���Խ�����mysql_store_result()һ��ʹ�ã�������mysql_use_result()��

ƫ����Ӧ���Ǵ�0��mysql_num_rows(result)-1��Χ��һ��ֵ��

20.4.6.2 ����ֵ

�ޡ�

20.4.6.3 ����

�ޡ�

��

20.4.7 mysql_debug()

void mysql_debug(char *debug)

20.4.7.1 ˵��

��һ�������ַ�����һ��DBUG_PUSH��mysql_debug()ʹ��Fred Fish ���Կ⡣Ϊ��ʹ�����������������������ͻ�����֧�ֵ��ԡ���G.1 ����һ��MySQL�������ͽ�G.2 ����һ��MySQL�ͻ���

20.4.7.2 ����ֵ

�ޡ�

20.4.7.3 ����

�ޡ�

20.4.7.4 ����

������ʾ�ĵ���ʹ�ÿͻ����ڿͻ��������ġ�/tmp/client.trace���в���һ�������ļ���

mysql_debug("d:t:O,/tmp/client.trace");
 

20.4.8 mysql_drop_db()

int mysql_drop_db(MYSQL *mysql, const char *db)

20.4.8.1 ˵��

������db�������������ݿ⡣

�����������Ƽ���������ʹ��mysql_query()����һ��SQL DROP DATABASE���䡣

20.4.8.2 ����ֵ

�������ݿ��ɹ��ر����������㡣��������һ�����󣬷��㡣

20.4.8.3 ����

CR_COMMANDS_OUT_OF_SYNC
������һ������ȷ�Ĵ�����ִ�С�
CR_SERVER_GONE_ERROR
MySQL�������ر��ˡ�
CR_SERVER_LOST
�Է����ߵ������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ����� 

20.4.8.4 ����

if(mysql_drop_db(&mysql, "my_database"))
  fprintf(stderr, "Failed to drop the database: Error: %s\n",
          mysql_error(&mysql));
 

20.4.9 mysql_dump_debug_info()

int mysql_dump_debug_info(MYSQL *mysql)

20.4.9.1 ˵��

ָʾ�����߽�һЩ������Ϣд����־�ļ������ӵ��û��Դ˱�����precessȨ�޲��ܹ�����

20.4.9.2 ����ֵ

���������ɹ����㡣��������һ�����󣬷��㡣

20.4.9.3 ����

CR_COMMANDS_OUT_OF_SYNC
������һ������ȷ�Ĵ�����ִ�С�
CR_SERVER_GONE_ERROR
MySQL�����߹ر��ˡ�
CR_SERVER_LOST
�Է������������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����

��

20.4.10 mysql_eof()

my_bool mysql_eof(MYSQL_RES *result)

20.4.10.1 ˵��

�����������Ƽ�����ʹ��mysql_errno()��mysql_error()��

mysql_eof()ȷ���Ƿ��Ѿ�������һ���������ϵ�����һ�С�

�������ӳɹ���mysql_store_result()���û���һ���������ϣ��ͻ�������һ�������յ�ȫ�����ϡ������������£���mysql_fetch_row()����һ��NULL������ζ���Ѿ������˽������ϵ�β����û��Ҫ����mysql_eof()��

����һ���棬������ʹ��mysql_use_result()��ʼ��һ���������ϵļ������ü��ϵ����������ظ�����mysql_fetch_row()һ��һ���شӷ��������á���Ϊ�������������������Ͽ��ܷ���һ�����󣬴�mysql_fetch_row()����һ��NULLֵ������ζ�ż�������������β���������������£�����ʹ��mysql_eof()ȷ��������ʲô�����������������ϵ�β����mysql_eof()���ط���ֵ��������������һ�����󣬷����㡣

��ʱ���ϣ�mysql_eof()���ڱ�׼MySQL��������mysql_errno()��mysql_error()����Ϊ��Щ���������ṩ��ͬ����Ϣ�����ǵ�ʹ�ø���mysql_eof()�������ڲ�����ʹ�á�����ʵ�ϣ������ṩ��������Ϣ����Ϊmysql_eof()ֵ����һ������ֵ������������ָ������������ʱ�ij���ԭ�򡣣�

20.4.10.2 ����ֵ

��������һ���������㡣���������������ϵĽ��������㡣

20.4.10.3 ����

�ޡ�

20.4.10.4 ����

����������ʾ����������ʹ��mysql_eof()��

mysql_query(&mysql,"SELECT * FROM some_table");
result = mysql_use_result(&mysql);
while((row = mysql_fetch_row(result)))
{
    // do something with data
}
if(!mysql_eof(result))  // mysql_fetch_row() failed due to an error
{
    fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
}

Ȼ�����������ñ�׼MySQL������������ͬ����Ч����

mysql_query(&mysql,"SELECT * FROM some_table");
result = mysql_use_result(&mysql);
while((row = mysql_fetch_row(result)))
{
    // do something with data
}
if(mysql_errno(&mysql))  // mysql_fetch_row() failed due to an error
{
    fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
}
 

20.4.11 mysql_errno()

unsigned int mysql_errno(MYSQL *mysql)

20.4.11.1 ˵��

������mysqlָ�������ӣ�mysql_errno()�����������õĿ��ܳɹ���ʧ�ܵ�API�����Ĵ������롣����ֵ����ζ��û�д����������ͻ�������Ϣ�����г���MySQL��errmsg.h��ͷ�ļ��С�������������Ϣ�����г�����mysqld_error.h���С�

20.4.11.2 ����ֵ��

һ����������ֵ������û�д����������㡣

20.4.11.3 ����

�ޡ�

20.4.12 mysql_error()

char *mysql_error(MYSQL *mysql)

20.4.12.1 ˵��

������mysqlָ�������ӣ�mysql_errno()�����������õĿ��ܳɹ���ʧ�ܵ�API�����Ĵ������롣����û�д������������ؿ��ַ���("")������ζ���������������ǵȼ۵ģ�

if(mysql_errno(&mysql))
{
    // an error occurred
}

if(mysql_error(&mysql)[0] != '\0')
{
    // an error occurred
}

�ͻ�������Ϣ�����Կ�ͨ�����±���MySQL�ͻ������ı䡣Ŀǰ�������ڼ��ֲ�ͬ�����Լ�ѡȡ������Ϣ����9.1 MySQL֧��ʲô���ԣ���

20.4.12.2 ����ֵ

һ�������������ַ���������û�д������������ַ�����

20.4.12.3 ����

�ޡ�

��

20.4.13 mysql_escape_string()

unsigned int mysql_escape_string(char *to, const char *from, unsigned int length)

20.4.13.1 ˵��

����from�е��ַ�������Ϊ��һ��SQL�����п��Է�����������ת����SQL�ַ���������������to�У� ���Ҽ���һ����ֹ�Ŀ��ֽڡ��������ַ���NUL��ASCII 0)����\n������\r������\������'������"����Control-Z(��7.1 ���֣�����д�ַ���������)��

��fromָ�����ַ���������length���ֽڳ�������������to�Ļ���������length*2+1���ֽڳ������ڸ�����������ÿ���ַ�������Ҫʹ��2���ֽڱ����룬��������ҪΪ��ֹ���ֽڵĿռ�) ��mysql_escape_string()����ʱ��to�����ݽ��ǿ��ַ���ֹ���ַ���������ֵ�DZ��������ַ����ij��ȣ���������ֹ���ַ���

20.4.13.2 ����

char query[1000],*end;

end = strmov(query,"INSERT INTO test_table values(");
*end++ = '\'';
end += mysql_escape_string(end,"What's this",11);
*end++ = '\'';
*end++ = ',';
*end++ = '\'';
end += mysql_escape_string(end,"binary data: \0\r\n",16);
*end++ = '\'';
*end++ = ')';

if (mysql_real_query(&mysql,query,(unsigned int) (end - query)))
{
   fprintf(stderr, "Failed to insert row, Error: %s\n",
           mysql_error(&mysql));
}

���������õ�strmov()������������mysqlclient�����ҹ���������strcpy()�����Ƿ���һ��ָ������ֹ�ĵ�һ��������ָ�롣

20.4.13.3 ����ֵ

�Ž�to��ֵ�ij��ȣ���������ֹ���ַ���

20.4.13.4 ����

�ޡ�

��

20.4.14 mysql_fetch_field()

MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result)

20.4.14.1 ˵��

������Ϊһ��MYSQL_FIELD�ṹ��һ���������ϵ�һ���еĶ��塣�ظ��������������ڽ��������м������й����е���Ϣ����û��ʣ�¸������ֶ�ʱ��mysql_fetch_field()����NULL��

��ÿ����ִ��һ���µ�SELECT��ѯ��mysql_fetch_field()�����ã�reset)�Է����йص�һ�е���Ϣ����mysql_fetch_field()���ص��ֶ�Ҳ�ܵ���mysql_field_seek()��Ӱ�졣

����������mysql_query()��һ�ű���ִ��һ��SELECT������û����mysql_store_result()������������mysql_fetch_field()ѯ��һ��BLOB�ֶεij��ȣ�MySQL����ȱʡBLOB����(8K�ֽ�)����ѡ��8K�ij�������ΪMySQL��֪��BLOB�����󳤶ȡ���Ӧ����ij��ʱ������������) һ�����Ѿ������˽������ϣ�field->max_length���������ض���ѯ�ж��ڸ�������ֵ�ij��ȡ�

20.4.14.2 ����ֵ

��ǰ�е�MYSQL_FIELD�ṹ������û����ʣ�£�NULL��

20.4.14.3 ����

�ޡ�

20.4.14.4 ����

MYSQL_FIELD *field;

while((field = mysql_fetch_field(result)))
{
    printf("field name %s\n", field->name);
}
 

20.4.15 mysql_fetch_fields()

MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *result)

20.4.15.1 ˵��

����һ���������ϵ�����MYSQL_FIELD�ṹ�����顣ÿ���ṹ�ṩ����������һ�е��ֶζ��塣

20.4.15.2 ����ֵ

һ���������ϵ�����MYSQL_FIELD�ṹ��һ�����顣

20.4.15.3 ����

�ޡ�

20.4.15.4 ����

unsigned int num_fields;
unsigned int i;
MYSQL_FIELD *fields;

num_fields = mysql_num_fields(result);
fields = mysql_fetch_fields(result);
for(i = 0; i < num_fields; i++)
{
   printf("Field %u is %s\n", i, fields[i].name);
}

20.4.16 mysql_fetch_field_direct()

MYSQL_FIELD *mysql_fetch_field_direct(MYSQL_RES *result, unsigned int fieldnr)

20.4.16.1 ˵��

������һ�����������е�һ���е��ֶα���fieldnr��������ΪMYSQL_FIELD�ṹ���е��ֶζ��塣������ʹ�������������������е��塣fieldnr��ֵӦ���ڴ�0��mysql_num_fields(result)-1��Χ�ڡ�

20.4.16.2 ����ֵ

ָ���е�MYSQL_FIELD�ṹ��

20.4.16.3 ����

�ޡ�

20.4.16.4 ����

unsigned int num_fields;
unsigned int i;
MYSQL_FIELD *field;

num_fields = mysql_num_fields(result);
for(i = 0; i < num_fields; i++)
{
    field = mysql_fetch_field_direct(result, i);
    printf("Field %u is %s\n", i, field->name);
}
 

20.4.17 mysql_fetch_lengths()

unsigned long *mysql_fetch_lengths(MYSQL_RES *result)

20.4.17.1 ˵��

�����ڽ��������ڵĵ�ǰ�е��г��ȡ��������ƻ������ֶ�ֵ������������Ϣ���Ż�Ҳ�����õģ���Ϊ�����Ա�������strlen()�����⣬�������������а������������ݣ�������ʹ����������ȷ�����ݵĴ�С����Ϊstrlen()�԰������ַ����κ��ֶη��ز���ȷ�Ľ�����

���кͰ���NULL���еij���ֵ���㡣Ϊ�˿�������������������������mysql_fetch_row()��˵����

20.4.17.2 ����ֵ

��ʾÿ�д�С���޷��ų�������һ������(�������κ���ֹ���ַ�)����������һ��������NULL��

20.4.17.3 ����

mysql_fetch_lengths()ֻ�Խ������ϵĵ�ǰ����Ч���������ڵ���mysql_fetch_row()֮ǰ���ڼ������ڽ����е������Ժ���������NULL��

20.4.17.4 ����

MYSQL_ROW row;
unsigned long *lengths;
unsigned int num_fields;
unsigned int i;

row = mysql_fetch_row(result);
if (row)
{
    num_fields = mysql_num_fields(result);
    lengths = mysql_fetch_lengths(result);
    for(i = 0; i < num_fields; i++)
    {
         printf("Column %u is %lu bytes in length.\n", i, lengths[i]);
    }
}
 

20.4.18 mysql_fetch_row()

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

20.4.18.1 ˵��

����һ���������ϵ���һ�С�����mysql_store_result()֮��ʹ��ʱ������û�и������пɼ���ʱ��mysql_fetch_row()����NULL������mysql_use_result()֮��ʹ��ʱ����û�и������пɼ���ʱ����������һ��������mysql_fetch_row()����NULL��

������ֵ��������mysql_num_fields(result)����������row�����˴�һ������mysql_fetch_row()���÷��ص�ֵ��ָ����ֵ��ָ����Ϊrow[0]��row[mysql_num_fields(result)-1]����ȡ�������е�NULLֵ��NULLָ��ָ����

�������ֶ�ֵ�ij��ȿ���ͨ������mysql_fetch_lengths()���á����ֶκͰ���NULL���ֶγ��ȶ��� 0��������ͨ��������ֵ��ָ���������ǡ�����ָ����NULL���ֶ���NULL�������ֶ��ǿյġ�

20.4.18.2 ����ֵ

��һ�е�һ��MYSQL_ROW�ṹ������û�и������пɼ�������������һ��������NULL��

20.4.18.3 ����

CR_SERVER_LOST
�Է������������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����

20.4.18.4 ����

MYSQL_ROW row;
unsigned int num_fields;
unsigned int i;

num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result)))
{
   unsigned long *lengths;
   lengths = mysql_fetch_lengths(result);
   for(i = 0; i < num_fields; i++)
   {
       printf("[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL");
   }
   printf("\n");
}
 

20.4.19 mysql_field_count()

unsigned int mysql_field_count(MYSQL *mysql)

����������ʹ��һ����3.22.24��MySQL�汾����Ӧ��ʹ��unsigned int mysql_num_fields(MYSQL *mysql)��

20.4.19.1 ˵��

�����������ϵ�������ѯ���е�������

��������һ������mysql_store_result()����NULLʱ��������û�н�������ָ��)�������������У����ܵ���mysql_field_count()ȷ��mysql_store_result()�Ƿ�Ӧ�ò�����һ���ǿյĽ�����������һ���ͻ�����ִ����ȷ�IJ�����������֪����ѯ�Ƿ���һ��SELECT������SELECT)���䡣������ʾ������˵������������������

��20.4.51 Ϊʲô��mysql_query()���سɹ�����mysql_store_result()��ʱ����NULL?��

20.4.19.2 ����ֵ

�ڽ��������б�ʾ�ֶ������ֵ�һ���޷���������

20.4.19.3 ����

�ޡ�

20.4.19.4 ����

MYSQL_RES *result;
unsigned int num_fields;
unsigned int num_rows;

if (mysql_query(&mysql,query_string))
{
    // error
}
else // query succeeded, process any data returned by it
{
    result = mysql_store_result(&mysql);
    if (result)  // there are rows
    {
        num_fields = mysql_num_fields(result);
        // retrieve rows, then call mysql_free_result(result)
    }
    else  // mysql_store_result() returned nothing; should it have?
    {
        if(mysql_field_count(&mysql) == 0)
        {
            // query does not return data
            // (it was not a SELECT)
            num_rows = mysql_affected_rows(&mysql);
        }
        else // mysql_store_result() should have returned data
        {
            fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
        }
    }
}

��һ��ѡ������mysql_errno(&mysql)����mysql_field_count(&mysql)���á������������У���ֱ�Ӽ�������mysql_store_result()��һ���������Ǵ�mysql_field_count()ֵ���ƶ������Ƿ���һ��SELECT��

20.4.20 mysql_field_seek()

MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)

20.4.20.1 ˵��

���ֶι������õ�������ƫ��������һ�ε���mysql_fetch_field()����������ƫ�����������е��ֶζ��塣

Ϊ�˶�λ���е���ʼ������һ��ֵΪ0��offsetֵ��

20.4.20.2 ����ֵ

�ֶι�������ǰ��ֵ��

20.4.20.3 ����

�ޡ�

20.4.21mysql_field_tell()

MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES *result)

20.4.21.1 ˵��

������������һ��mysql_fetch_field()���ֶι�����λ�á�����ֵ������mysql_field_seek()��һ��������

20.4.21.2 ����ֵ

�ֶι����ĵ�ǰƫ������

20.4.21.3 ����

�ޡ�

20.4.22 mysql_free_result()

void mysql_free_result(MYSQL_RES *result)

20.4.22.1 ˵��

�ͷ���mysql_store_result()��mysql_use_result()��mysql_list_dbs()��Ϊһ���������Ϸ������ڴ档����������һ����������ʱ������������mysql_free_result()���ͷ���ʹ�õ��ڴ档

20.4.22.2 ����ֵ

�ޡ�

20.4.22.3 ����

�ޡ�

20.4.23 mysql_get_client_info()

char *mysql_get_client_info(void)

20.4.23.1 ˵��

���ش����ͻ����İ汾���ַ�����

20.4.23.2 ����ֵ

����MySQL�ͻ����汾��һ���ַ�����

20.4.23.3 ����

�ޡ�

20.4.24 mysql_get_host_info()

char *mysql_get_host_info(MYSQL *mysql)

20.4.24.1 ˵��

������������ʹ�õ��������͵��ַ�����������������������

20.4.24.2 ����ֵ

��ʾ�������������ߺ��������͵��ַ�����

20.4.24.3 ����

�ޡ�

��

20.4.25 mysql_get_proto_info()

unsigned int mysql_get_proto_info(MYSQL *mysql)

20.4.25.1 ˵��

���ص�ǰ����ʹ�õ�Э���汾��

20.4.25.2 ����ֵ

��ʾ����ǰ����ʹ�õ�Э���汾��һ���޷���������

20.4.25.3 ����

�ޡ�

20.4.26 mysql_get_server_info()

char *mysql_get_server_info(MYSQL *mysql)

20.4.26.1 ˵��

���ر�ʾ�������汾�ŵ��ַ�����

20.4.26.2 ����ֵ

��ʾ�������汾�ŵ�һ���ַ�����

20.4.26.3 ����

�ޡ�

20.4.27 mysql_info()

char *mysql_info(MYSQL *mysql)

20.4.27.1 ˵��

����һ���ַ��������ṩ�й�����ִ�еIJ�ѯ����Ϣ�����Ƕ������г������䡣���������䣬mysql_info()����NULL���ַ����ĸ�ʽ����ѯ���Ͷ��仯���������������ֽ�����˵���Եģ��ַ����������Բ�ѯ�ʵ���ֵ��

INSERT INTO ... SELECT ...
�ַ�����ʽ�� Records: 100 Duplicates: 0 Warnings: 0
INSERT INTO ... VALUES (...),(...),(...)...
�ַ�����ʽ�� Records: 3 Duplicates: 0 Warnings: 0
LOAD DATA INFILE ...
�ַ�����ʽ�� Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
ALTER TABLE
�ַ�������ʽ�� Records: 3 Duplicates: 0 Warnings: 0
UPDATE
�ַ�����ʽ�� Rows matched: 40 Changed: 40 Warnings: 0

ע�⣬ֻ�ж���ֵ��������ָ����mysql_info()��INSERT ... VALUES�����ŷ��ط�NULLֵ��

20.4.27.2 ����ֵ

��ʾ����ִ�еIJ�ѯ�ĸ�����Ϣ��һ���ַ����������ò�����ѯ���κ���Ϣ��NULL��

20.4.27.3 ����

�ޡ�

20.4.28 mysql_init()

MYSQL *mysql_init(MYSQL *mysql)

20.4.28.1 ˵��

��������ʼ���ʺ�mysql_real_connect()��һ��MYSQL����������mysql��һ��NULLָ�룬�������䡢��ʼ�����ҷ���һ���¶��󡣷������󱻳�ʼ�����ҷ��ض����ĵ�ַ������mysql_init()����һ���¶����������ڵ���mysql_close()�ر�����ʱ���ͷš�

20.4.28.2 ����ֵ

һ������ʼ����MYSQL*����������û���㹻���ڴ�������һ���¶�����NULL��

20.4.28.3 ����

���ڴ治���������£�����NULL��

20.4.29 mysql_insert_id()

my_ulonglong mysql_insert_id(MYSQL *mysql)

20.4.29.1 ˵��

��������ǰ�IJ�ѯΪһ��AUTO_INCREMENT�����ɵ�ID������ִ��һ��INSERT��ѯ��һ������AUTO_INCREMENT�ֶεı��в�������ʹ������������

ע�⣬������ǰ�IJ�ѯ������һ��AUTO_INCREMENTֵ��mysql_insert_id()����0����������Ҫ���Ժ󱣴���ֵ�������ڲ�ѯ�����˸�ֵ�����ϵ���mysql_insert_id()��

ҲҪע�⣬SQL��LAST_INSERT_ID()�������ǰ����������ɵ�AUTO_INCREMENTֵ�������ڲ�ѯ֮�䲻�����ã���Ϊ�ú�����ֵ�ڷ�������ά����

20.4.29.2 ����ֵ

����ǰ�IJ�ѯ���µ�AUTO_INCREMENT�ֶε�ֵ��������������û����ǰ��ѯ�ʻ�������ѯû����AUTO_INCREMENTֵ�������㡣

20.4.29.3 ����

�ޡ�

20.4.30 mysql_kill()

int mysql_kill(MYSQL *mysql, unsigned long pid)

20.4.30.1 ˵��

Ҫ��������ɱ����pidָ�����̡߳�

20.4.30.2 ����ֵ

�ɹ����㡣��������һ�����󣬷��㡣

20.4.30.3 ����

CR_COMMANDS_OUT_OF_SYNC
������һ������ȷ�Ĵ�����ִ�С�
CR_SERVER_GONE_ERROR
MySQL�������ر��ˡ�
CR_SERVER_LOST
�Է������������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����

��

20.4.31 mysql_list_dbs()

MYSQL_RES *mysql_list_dbs(MYSQL *mysql, const char *wild)

20.4.31.1 ˵��

����һ���������ϣ������ڷ������ϵ�ƥ��wild����ָ���ļ�����������ʽ�����ݿ������ɡ�wild���԰���ͨ�����ַ���%������_������������ƥ�����е����ݿ���һ��NULLָ�롣����mysql_list_dbs()������ִ�в�ѯSHOW databases [LIKE wild]��

��������mysql_free_result()�ͷŽ������ϡ�

20.4.31.2 ����ֵ

�ɹ���һ��MYSQL_RES�������ϡ���������һ��������NULL��

20.4.31.3 ����

CR_COMMANDS_OUT_OF_SYNC
������һ������ȷ�Ĵ�����ִ�С�
CR_OUT_OF_MEMORY
�ڴ�������
CR_SERVER_GONE_ERROR
MySQL�������ر��ˡ�
CR_SERVER_LOST
�Է������������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����

��

20.4.32 mysql_list_fields()

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

20.4.32.1 ˵��

����һ���������ϣ������ڸ������е�ƥ��wild����ָ���ļ�����������ʽ���������ɡ�wild���԰���ͨ�����ַ���%������_������������ƥ�������е�һ��NULLָ�롣����mysql_list_fields()������ִ�в�ѯSHOW COLUMNS FROM tbl_name [LIKE wild]��

ע�⣬������ʹ��SHOW COLUMNS FROM tbl_name������mysql_list_fields()��

��������mysql_free_result()�ͷŽ������ϡ�

20.4.32.2 ����ֵ

�ɹ���һ��MYSQL_RES�Ľ������ϡ���������һ��������NULL��

20.4.32.3 ����

CR_COMMANDS_OUT_OF_SYNC
������һ������ȷ�Ĵ�����ִ�С�
CR_SERVER_GONE_ERROR
MySQL�����߹ر��ˡ�
CR_SERVER_LOST
�Է������������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����

20.4.33 mysql_list_processes()

MYSQL_RES *mysql_list_processes(MYSQL *mysql)

20.4.33.1 ˵��

����һ��������ǰ�������̵߳Ľ������ϡ�������mysqladmin processlist��SHOW PROCESSLIST��ѯ��������ͬ��Ϣ��

��������mysql_free_result()�ͷŽ������ϡ�

20.4.33.2 ����ֵ

�ɹ���һ��MYSQL_RES�������ϡ���������һ��������NULL��

20.4.33.3 ����

CR_COMMANDS_OUT_OF_SYNC
������һ������ȷ�Ĵ�����ִ�С�
CR_SERVER_GONE_ERROR
MySQL�����߹ر��ˡ�
CR_SERVER_LOST
�Է������������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����

20.4.34 mysql_list_tables()

MYSQL_RES *mysql_list_tables(MYSQL *mysql, const char *wild)

20.4.34.1 ˵��

����һ���������ϣ������ڵ�ǰ���ݿ��е�ƥ��wild����ָ���ļ�����������ʽ�ı������ɡ�wild���԰���ͨ�����ַ���%������_������������ƥ�����б���һ��NULLָ�롣����mysql_list_tables()������ִ��ѯ��SHOW tables [LIKE wild]��

��������mysql_free_result()�ͷŽ������ϡ�

20.4.34.2 ����ֵ

�ɹ���һ��MYSQL_RES�������ϡ���������һ��������NULL��

20.4.34.3 ����

CR_COMMANDS_OUT_OF_SYNC
������һ������ȷ�Ĵ�����ִ�С�
CR_SERVER_GONE_ERROR
MySQL�������ر��ˡ�
CR_SERVER_LOST
�Է������������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����

20.4.35 mysql_num_fields()

unsigned int mysql_num_fields(MYSQL_RES *result)

��

unsigned int mysql_num_fields(MYSQL *mysql)

�ڶ�����ʽ��MySQL 3.22.24�����°汾�ϲ��ܹ�����Ϊ�˴���һ��MYSQL* ������������ʹ��unsigned int mysql_field_count(MYSQL *mysql)��

20.4.35.1 ˵��

�ڽ��������з����е�������

ע�⣬��Ҳ����ͨ��һ��ָ��һ���������ϻ�һ�����Ӿ�����ָ�������е�����������mysql_store_result()��mysql_user_result()����NULL���㽫ʹ�����Ӿ�������������û�н�������ָ��)�������������£������Ե���mysql_field_count()ȷ��mysql_store_result()�Ƿ�Ӧ�ò����ǿյĽ������������ͻ�������ȡ����ȷ���ж�������֪����ѯ�Ƿ���һ��SELECT������SELECT)���䡣���汻��ʾ��������˵������ô���Ա�����

��20.4.51 Ϊʲô��mysql_query()���سɹ�����mysql_store_result()��ʱ����NULL?��

20.4.35.2 ����ֵ

��ʾһ�������������ֶ�������һ���޷���������

20.4.35.3 ����

�ޡ�

20.4.35.4 ����

MYSQL_RES *result;
unsigned int num_fields;
unsigned int num_rows;

if (mysql_query(&mysql,query_string))
{
    // error
}
else // query succeeded, process any data returned by it
{
    result = mysql_store_result(&mysql);
    if (result)  // there are rows
    {
        num_fields = mysql_num_fields(result);
        // retrieve rows, then call mysql_free_result(result)
    }
    else  // mysql_store_result() returned nothing; should it have?
    {
        if (mysql_errno(&mysql))
	{
           fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
	}
        else if (mysql_field_count(&mysql) == 0)
        {
            // query does not return data
            // (it was not a SELECT)
            num_rows = mysql_affected_rows(&mysql);
        }
    }
}

��һ��ѡ��(������֪������ѯӦ�÷�����һ����������)����mysql_field_count(&mysql) = 0��һ������������mysql_errno(&mysql)����ֻ�ᷢ���ڳ����˵����Ρ�

20.4.36 mysql_num_rows()

my_ulonglong mysql_num_rows(MYSQL_RES *result)

20.4.36.1 ˵��

�ڽ��������з����е�������

mysql_num_rows()��ʹ��ȡ�������Ƿ�ʹ��mysql_store_result()��mysql_use_result()����һ���������ϡ�������ʹ��mysql_store_result()��mysql_num_rows()�������ϱ����á�������ʹ��mysql_use_result()��mysql_num_rows()�����᷵����ȷ��ֵ��ֱ���ڽ��������е������о��������ˡ�

20.4.36.2 ����ֵ

�ڽ����������е�������

20.4.36.3 ����

�ޡ�

20.4.37 mysql_options()

int mysql_options(MYSQL *mysql, enum mysql_option option, const char *arg)

20.4.37.1 ˵��

���������ö�������ѡ���Ӱ��һ�����ӵ���Ϊ�������������Ա����ε��������ö���ѡ�

mysql_options()Ӧ����mysql_init()֮����mysql_connect()��mysql_real_connect()֮ǰ���á�

option����������Ҫ���õ�ѡ�arg������ѡ����ֵ������ѡ����һ����������ôargӦ��ָ������ֵ��

���ܵ�ѡ��ֵ��

ѡ�� �������� ����
MYSQL_OPT_CONNECT_TIMEOUT unsigned int * �����Ƶ����ӳ�ʱ��
MYSQL_OPT_COMPRESS ��ʹ�� ʹ��ѹ���Ŀͻ���/������Э�顣
MYSQL_OPT_NAMED_PIPE ��ʹ�� ʹ�������ܵ�����һ����NT�ϵ�MySQL��������
MYSQL_INIT_COMMAND char * ������MySQL������ʱִ�е��������������ʱ�����Զ�����ִ�С�
MYSQL_READ_DEFAULT_FILE char * ��������ѡ���ļ������Ǵ���my.cnf����ȡѡ�
MYSQL_READ_DEFAULT_GROUP char * ����my.cnf������MYSQL_READ_DEFAULT_FILEָ�����ļ��е��������ж�ȡѡ�

ע�⣬������ʹ��MYSQL_READ_DEFAULT_FILE��MYSQL_READ_DEFAULT_GROUP�����Ƕ�ȡclient��

��ѡ���ļ���ָ���������ܰ�������ѡ�

compress ʹ��ѹ���Ŀͻ���/������Э�顣
database ����������������û��ָ�����ݿ⣬ʹ���������ݿ⡣
debug ����ѡ��
host ȱʡ������
init-command ������MySQL������ʱ��ִ�е��������������ʱ�����Զ�����ִ�С�
password ȱʡ����
pipe ʹ�������ܵ�����һ����NT�ϵ�MySQL��������
port ȱʡ�˿ں�
return-found-rows ����mysql_info()�����ҵ����У���������ʹ��UPDATEʱ�����ظ��µ��С�
socket ȱʡ�׽��ֺ�
timeout �����Ƶ����ӳ�ʱ��
user ȱʡ�û�

����ѡ���ļ��ĸ�����Ϣ����4.15.4 ѡ���ļ���

20.4.37.2 ����ֵ

�ɹ����㡣������ʹ����δ֪��ѡ����㡣

20.4.37.3 ����

MYSQL mysql;

mysql_init(&mysql);
mysql_options(&mysql,MYSQL_OPT_COMPRESS,0);
mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"odbc");
if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
    fprintf(stderr, "Failed to connect to database: Error: %s\n",
          mysql_error(&mysql));
}

���������ͻ�ʹ��ѹ���Ŀͻ���/������Э�鲢�Ҵ�my.cnf�ļ���odbcС�ڶ�ȡ������ѡ�

20.4.38 mysql_ping()

int mysql_ping(MYSQL *mysql)

20.4.38.1 ˵��

���鵽�������������Ƿ����ڹ������������ر��ˣ��Զ�����һ�������ӡ�

���������ɱ��Ѿ����кܳ�ʱ���Ŀͻ�ʹ�ã��������������Ƿ��ر������Ӳ������б�Ҫ�������ӡ�

20.4.38.2 ����ֵ

�������������ţ��㡣��������һ�����󣬷��㡣

20.4.38.3 ����

CR_COMMANDS_OUT_OF_SYNC
������һ�����ʵ��Ĵ�����ִ�С�
CR_SERVER_GONE_ERROR
MySQL�������ر��ˡ�
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����

��

20.4.39 mysql_query()

int mysql_query(MYSQL *mysql, const char *query)

20.4.39.1 ˵��

ִ��ָ������ֹ���ַ���query��SQL��ѯ����ѯ������һ��������SQL�������ɡ��㲻Ӧ��������������һ����ֹ�ķֺ�(������)��\g��

mysql_query()���ܱ����ڰ������������ݵIJ�ѯ���෴��Ӧ��ʹ��mysql_real_query()�������������ݿ��ܰ�����\0���ַ�����mysql_query()������Ϊ��ѯ�ַ����Ľ�������

20.4.39.2 ����ֵ

������ѯ�ɹ����㡣��������һ�����󣬷��㡣

20.4.39.3 ����

CR_COMMANDS_OUT_OF_SYNC
������һ�����ʵ��Ĵ�����ִ�С�
CR_SERVER_GONE_ERROR
MySQL�������ر��ˡ�
CR_SERVER_LOST
���������������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����

��

20.4.40 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 int client_flag)

20.4.40.1 ˵��

mysql_real_connect()��ͼ����������host��һ��MySQL���ݿ�������һ�����ӡ� mysql_real_connect()��������ִ���κ�����API����֮ǰ�����ɹ������ɣ�����mysql_get_client_info()��

����ָ�����£�

20.4.40.2 ����ֵ

�������ӳɹ���һ�� MYSQL*���Ӿ�������������ʧ�ܣ�NULL����һ���ɹ������ӣ�����ֵ����һ������ֵ��ͬ�������㴫��NULL���ò�����

20.4.40.3 ����

CR_CONN_HOST_ERROR
��������MySQL��������
CR_CONNECTION_ERROR
�������ӱ���MySQL��������
CR_IPSOCK_ERROR
���ܴ���һ��IP�׽��֡�
CR_OUT_OF_MEMORY
�ڴ�������
CR_SOCKET_CREATE_ERROR
���ܴ���һ��Unix�׽��֡�
CR_UNKNOWN_HOST
�����ҵ���������IP��ַ��
CR_VERSION_ERROR
������ͼʹ��һ����ͬЭ���汾��һ���ͻ�����һ�����������ӵ��µ�һ��Э��ʧ�䡣������ʹ��һ���dz��ϵĿͻ�������һ��û��ʹ��--old-protocolѡ���������·������������ܷ�����
CR_NAMEDPIPEOPEN_ERROR;
������ Win32 �ϴ���һ�������ܵ���
CR_NAMEDPIPEWAIT_ERROR;
������ Win32 �ϵȴ�һ�������ܵ���
CR_NAMEDPIPESETSTATE_ERROR;
������ Win32 �ϵõ�һ���ܵ���������

20.4.40.4 ����

MYSQL mysql;

mysql_init(&mysql);
if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
    fprintf(stderr, "Failed to connect to database: Error: %s\n",
          mysql_error(&mysql));
}

20.4.41 mysql_real_query()

int mysql_real_query(MYSQL *mysql, const char *query, unsigned int length)

20.4.41.1 ˵��

ִ����queryָ����SQL��ѯ����Ӧ����һ��length���ֽڵ��ַ�������ѯ������һ��������SQL�������ɡ��㲻Ӧ��������������һ����ֹ�ķֺ�(��;��)��\g��

���ڰ������������ݵIJ�ѯ��������ʹ��mysql_real_query()������mysql_query()����Ϊ�����ƴ������ݿ��ܰ�����\0���ַ������ң�mysql_real_query()��mysql_query()���죬��Ϊ���Բ�ѯ�ַ�������strlen()��

20.4.41.2 ����ֵ

������ѯ�ɹ����㡣��������һ�����󣬷��㡣

20.4.41.3 ����

CR_COMMANDS_OUT_OF_SYNC
������һ�����ʵ��Ĵ�����ִ�С�
CR_SERVER_GONE_ERROR
MySQL�������ر��ˡ�
CR_SERVER_LOST
�Է������������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����

��

20.4.42 mysql_reload()

int mysql_reload(MYSQL *mysql)

20.4.42.1 ˵��

Ҫ��MySQL�������ٴ�װ����Ȩ�������ӵ��û�����ӵ��reloadȨ�ޡ�

���Ƽ���������������ʹ��mysql_query()����һ��SQL FLUSH PRIVILEGES���䡣

20.4.42.2 ����ֵ

�ɹ����㡣��������һ�����󣬷��㡣

20.4.42.3 ����

��
CR_COMMANDS_OUT_OF_SYNC
������һ�����ʵ��Ĵ�����ִ�С�
CR_SERVER_GONE_ERROR
MySQL�������ر��ˡ�
CR_SERVER_LOST
�Է������������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����

��

20.4.43 mysql_row_seek()

MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET offset)

20.4.43.1 ˵��

�����й���Ϊ�ڽ��������е������С���Ҫ���������Ͻṹ������ѯ��ȫ������������mysql_row_seek()ֻ����mysql_store_result()һ��ʹ�ã�������mysql_use_result()��

ƫ����Ӧ���ǵ���mysql_row_tell()��mysql_row_seek()���ص�ֵ������ֵ���Ǽ򵥵�һ���кţ���������Ҫ�ڽ������������к���Ѱ���У�ʹ��mysql_data_seek()��

20.4.43.2 ����ֵ

�й�����ǰ��ֵ����ֵ���Ա����ݸ�������mysql_row_seek()���á�

20.4.43.3 ����

�ޡ�

20.4.44 mysql_row_tell()

MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *result)

20.4.44.1 ˵��

����Ϊ��mysql_fetch_row()���й����ĵ�ǰλ�á�����ֵ������Ϊһ����������mysql_row_seek()��

��Ӧ�ý���mysql_store_result()��ʹ��mysql_row_tell()����������mysql_use_result()����

20.4.44.2 ����ֵ

�й��굱ǰ��ƫ������

20.4.44.3 ����

�ޡ�

��

20.4.45 mysql_select_db()

int mysql_select_db(MYSQL *mysql, const char *db)

20.4.45.1 ˵��

ʹ����dbָ�������ݿ���Ϊ ����mysqlָ���������ϵ�ȱʡ(��ǰ)���ݿ⡣�������IJ�ѯ�У��������ݿ����ڲ�����һ����ʽ�����ݿ�ָ�����ı���������ȱʡ���ݿ⡣

�������ӵ��û��ܱ���֤����ʹ�����ݿ⣬����mysql_select_db()ʧ�ܡ�

20.4.45.2 ����ֵ

�ɹ����㡣��������һ�����󣬷��㡣

20.4.45.3 ����

CR_COMMANDS_OUT_OF_SYNC
������һ�����ʵ��Ĵ�����ִ�С�
CR_SERVER_GONE_ERROR
MySQL�������ر��ˡ�
CR_SERVER_LOST
�Է������������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����

��

20.4.46 mysql_shutdown()

int mysql_shutdown(MYSQL *mysql)

20.4.46.1 ˵��

�����ݿ��������رա����ӵ��û�������shutdownȨ�ޡ�

20.4.46.2 ����ֵ

�ɹ����㡣��������һ�����󣬷���

20.4.46.3 ����

CR_COMMANDS_OUT_OF_SYNC
������һ�����ʵ��Ĵ�����ִ�С�
CR_SERVER_GONE_ERROR
MySQL�������ر��ˡ�
CR_SERVER_LOST
�Է������������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����
��

20.4.47 mysql_stat()

char *mysql_stat(MYSQL *mysql)

20.4.47.1 ˵��

���ذ�����������mysqladmin status�����ṩ����Ϣ��һ���ַ������������������е����������������̡߳����⡢�ٴ�װ�غʹ򿪵ı�����Ŀ��

20.4.47.2 ����ֵ

����������״̬��һ���ַ�������������һ��������NULL��

20.4.47.3 ����

CR_COMMANDS_OUT_OF_SYNC
������һ�����ʵ��Ĵ�����ִ�С�
CR_SERVER_GONE_ERROR
MySQL�������ر��ˡ�
CR_SERVER_LOST
�Է������������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����

20.4.48 mysql_store_result()

MYSQL_RES *mysql_store_result(MYSQL *mysql)

20.4.48.1 ˵��

���ڳɹ��ؼ������ݵ�ÿ��ѯ��(SELECT��SHOW��DESCRIBE��EXPLAIN)������������mysql_store_result()��mysql_use_result()��

mysql_store_result()��ȡһ�����ͻ��IJ�ѯ��ȫ������������һ��MYSQL_RES�ṹ�����Ұѽ����Ž������ṹ�С�

����û���з��أ�����һ���ռ��ϼ��ϡ����ս������ϲ�ͬ��һ��NULL����ֵ����

һ����������mysql_store_result()�������Ե���mysql_num_rows()�ҳ������������ж����С�

���ܵ���mysql_fetch_row()�ӽ���������ȡ���У���mysql_row_seek()��mysql_row_tell()���������л��û����õ�ǰ����λ�á�

һ���������������ϣ�����������mysql_free_result()��

��20.4.51 Ϊʲômysql_query()���سɹ�����mysql_store_result()��ʱ����NULL?��

20.4.48.2 ����ֵ

һ������������MYSQL_RES�ṹ����������һ��������NULL��

20.4.48.3 ����

CR_COMMANDS_OUT_OF_SYNC
������һ�����ʵ��Ĵ�����ִ�С�
CR_OUT_OF_MEMORY
�ڴ�������
CR_SERVER_GONE_ERROR
MySQL�������ر��ˡ�
CR_SERVER_LOST
�Է������������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����

20.4.49 mysql_thread_id()

unsigned long mysql_thread_id(MYSQL *mysql)

20.4.49.1 ˵��

���ص�ǰ���ӵ��߳�ID������ֵ������mysql_kill()��һ��������ɱ���̡߳�

����ʧȥ���Ӳ�������mysql_ping()�������ӣ��߳�ID���ı䡣����ζ���㲻Ӧ��Ϊ�Ժ�ʹ�û����߳�ID���Ҵ洢����������Ҫ��ʱ����Ӧ�û�������

20.4.49.2 ����ֵ

��ǰ���ӵ��߳� ID ��

20.4.49.3 ����

�ޡ�

20.4.50 mysql_use_result()

MYSQL_RES *mysql_use_result(MYSQL *mysql)

20.4.50.1 ˵��

���ڳɹ��ؼ������ݵ�ÿ����ѯ(SELECT��SHOW��DESCRIBE��EXPLAIN)������������mysql_store_result()��mysql_use_result()��

mysql_use_result()��ʼ��һ���������ϵļ����������������������϶����ͻ�������mysql_store_result()�������෴������ͨ������mysql_fetch_row()����������ÿһ�У���ֱ�Ӵӷ�������������������һ����ʱ���򱾵ػ������д洢��������mysql_store_result()����һ�㲢��ʹ�ý��ٵ��ڴ档�ͻ���ֻΪ��ǰ�к�һ����������max_allowed_packet�ֽڵ�ͨ�Ż����������ڴ档

����һ���棬�������ڿͻ��˶�ÿһ���������ܶ��Ĵ������������������͵���Ļ���û����Դ�һ��^S��ֹͣ����)���㲻Ӧ��ʹ��mysql_use_result()���⽫����������������ֹ�������̴߳����ݱ�ȡ�����κα��и������ݡ�

��ʹ��mysql_use_result()ʱ��������ִ��mysql_fetch_row()ֱ������һ��NULLֵ������δȡ�����н���Ϊ��һ����ѯ�Ľ�������һ���ֱ����ء�������������������C API����������Commands out of sync; You can't run this command now��

�㲻����һ����mysql_use_result()���صĽ���������ʹ��mysql_data_seek()��mysql_row_seek()��mysql_row_tell()��mysql_num_rows()��mysql_affected_rows()����Ҳ���ܷ��������IJ�ѯֱ��mysql_use_result()���ɡ���Ȼ��������ȡ�����е����Ժ���mysql_num_rows()����ȷ�ط���ȡ������������

һ���������������ϣ�����������mysql_free_result()��

20.4.50.2 ����ֵ

һ��MYSQL_RES�����ṹ�� ��������һ������������NULL��

20.4.50.3 ����

CR_COMMANDS_OUT_OF_SYNC
������һ�����ʵ��Ĵ�����ִ�С�
CR_OUT_OF_MEMORY
�ڴ�������
CR_SERVER_GONE_ERROR
MySQL�������ر��ˡ�
CR_SERVER_LOST
�Է������������ڲ�ѯ�ڼ�ʧȥ��
CR_UNKNOWN_ERROR
����һ��δ֪�Ĵ�����

20.4.51 Ϊʲô��mysql_query()���سɹ�����mysql_store_result()��ʱ����NULL?

�п�����һ����mysql_query()�ɹ��ĵ��ú���mysql_store_result()����NULL�����ⷢ��ʱ������ζ�ų�������������֮һ��

�����ǿ���ͨ������mysql_field_count()���������Ƿ�Ӧ�ò����ǿյĽ���������mysql_field_count()�����㣬�����ǿյIJ�������һ����ѯ�Dz���ֵ��һ������(���磬һ��INSERT��DELETE)������mysql_field_count()���ط���ֵ������Ӧ�ò����ǿյĽ���������mysql_field_count()������һ�����ӡ�

�����Ե���mysql_error()��mysql_errno()����һ��������

20.4.52 ���ܴӲ�ѯ�еõ�ʲô������

�����ɲ�ѯ���صĽ��������⣬��Ҳ�ܵõ�������Ϣ��

20.4.53 �������ܵõ������������е�ΨһID��

������������һ������AUTO_INCREMENT���Ե��е�һ�ű��в���һ����¼������ͨ��mysql_insert_id()���������������ɵ�ID��

��Ҳ����ͨ�����㴫�ݸ�mysql_query()��һ����ѯ�ַ�����ʹ��LAST_INSERT_ID()����������ID��

������ִ�����д��������Ƿ�ʹ��һ��AUTO_INCREMENT��������Ҳ������ѯ�Ƿ�����һ��AUTO_INCREMENT������һ��INSERT��

if (mysql_error(&mysql)[0] == 0 &&
    mysql_num_fields(result) == 0 &&
    mysql_insert_id(&mysql) != 0)
{
    used_id = mysql_insert_id(&mysql);
}

����������ID����һ�������ӵĻ������ڷ������Ͻ���ά�����������������ͻ��ı䡣��������������һ���з�����(non-magic)ֵ(��һ���Ȳ���NULLҲ����0��ֵ)��AUTO_INCREMENT�У��������������ı䡣

��������Ҫʹ��Ϊһ�ű����ɵ�ID���Ұ������뵽��2�ű���������ʹ����������SQL���䣺

INSERT INTO foo (auto,text)
    VALUES(NULL,'text');              # generate ID by inserting NULL
INSERT INTO foo2 (id,text)
    VALUES(LAST_INSERT_ID(),'text');  # use ID in second table

20.4.54 ����C API������

����C API����ʱ�����д������ܷ���һЩϵͳ�ϣ�

gcc -g -o client test.o -L/usr/local/lib/mysql -lmysqlclient -lsocket -lnsl

Undefined        first referenced
 symbol          in file
floor            /usr/local/lib/mysql/libmysqlclient.a(password.o)
ld: fatal: Symbol referencing errors. No output written to client

����������������ϵͳ�ϣ�������ͨ���ڱ���/���������е���������-lm�԰�����ѧ�⡣

20.4.55 ��������һ���̰߳�ȫ�Ŀͻ�

�ͻ������������̰߳�ȫ�ġ��������������ڴ��׽��ֶ�ȡ����net.c���е��ӳ��������жϰ�ȫ��(interruot-safe)�����������������ǵģ����������������Լ��ı������ж�һ����ʱ���Ķ�ȡ��������

��׼�ͻ���û�����߳�ѡ�������롣

Ϊ�˻���һ���̰߳�ȫ�Ŀͻ���ʹ��-lmysys, -lstring��-ldbug���ͷ�����ʹ�õ�net_serv.o��

��ʹ��һ���̻߳��Ŀͻ�ʱ�������Գ�����������thr_alarm.c���ļ��еĺ���������������ʹ������mysys���ĺ�������Ψһ������ס�������ȵ���my_init()��

���к�������mysql_real_connect()Ŀǰ���̰߳�ȫ�ġ�����ע������������������һ���̰߳�ȫ�Ŀͻ��Ⲣ����һ���̰߳�ȫ�ķ�ʽʹ��������������mysql_real_connect()��ע������ʵ����Ҳ������mysql_connect()��������Ϊmysql_connect()���ᳫʹ�ã�����������Ӧ��ʹ��mysql_real_connect()����

Ϊ��ʹmysql_real_connect()���̰߳�ȫ�ģ��������������������±����ͻ��⣺

shell> CPPFLAGS=-DTHREAD_SAFE_CLIENT ./configure ...

�����ӱ�׼�ͻ�ʱ�������ܵõ���ijЩ��Ϊδ�������ŵĴ�������Ϊpthread��û�б�ȱʡ�ذ�����

���յ���libmysqlclient.a�����������̰߳�ȫ�ġ����ĺ�����ֻҪ2���̲߳�ͬʱ��ѯmysql_real_connect()���ص�ͬһ�����Ӿ������ͻ��������̰߳�ȫ�ģ��ͻ���/������Э����һ��������������һ��ֻ����һ������������������ͬһ����������ʹ�ö����̣߳���������mysql_query()��mysql_store_result()�������ϸ�����һ��mutex������һ��mysql_store_result()�����������Ա��ͷŲ��������߳̿��Բ�ѯͬһ�����ӡ������仰˵����ͬ���߳���ʹ�ò�ͬ��mysql_store_result()������MYSQL_RESָ�룬ֻҪ����ʹ���ʵ�������Э��) ��������POSIX�̱߳��̣�����ʹ��pthread_mutex_lock()��pthread_mutex_unlock()���������ͷ�һ��mutex������

������ʹ��mysql_use_result()������mysql_store_result()����������Ҫ��Χmysql_use_result()��mysql_fetch_row()�ĵ��ã�Ȼ������ȷʵ�Բ�ʹ��mysql_use_result()�߳̿ͻ������õġ�

20.5 MySQL Perl API

���ڼ�����Perl DBI�ӿڡ���ǰ�Ľӿڱ���Ϊmysqlperl����ΪDBI/DBD�������Ƽ���Perl�ӿڣ�mysqlperl�ǹ�ʱ�IJ��Ҳ����������ء�

20.5.1 DBI��DBD::mysql

DBI�Ƕ��ںܶ����ݿ���һ��ͨ�ýӿڡ�����ζ�����ܱ�дһ���ű������øı����ܹ����ںܶ����ݿ����档����ҪΪÿ�����ݿ����Ͷ����˵�һ�����ݿ���������(DBD)������MySQL��������������ΪDBD::mysql��

�й�Perl5 DBI�ĸ�����Ϣ��������DBI��ҳ�����Ķ��ĵ���

http://www.symbolstone.org/technology/perl/DBI/index.html

������Perl5���������������ı���(OOP)�ĸ�����Ϣ���μ�Perl OOPҳ��

http://language.perl.com/info/documentation.html

����MySQL Perl֧�ֵİ�װָ����4.10 Perl��װ˵���и�����

20.5.2 DBI�ӿ�

����ֲ��DBI����

connect ������һ�����ݿ�������������
disconnect �Ͽ����ݿ�������������
prepare ׼��ִ��һ��SQL����
execute ִ��׼���õ�����
do ׼����ִ��һ��SQL����
quote ��������Ҫ�������ַ�����BLOBֵ
fetchrow_array ��Ϊһ���ֶ�����ȡ����һ��
fetchrow_arrayref ��Ϊһ���ֶε���������ȡ����һ��
fetchrow_hashref ��Ϊһ����ϣ��������ȡ����һ��
fetchall_arrayref ��Ϊһ���ֶ�����ȡ����������
finish ����һ�����䲢����ϵͳ�ͷ���Դ
rows ������Ӱ��������
data_sources ���ؿ���localhost�ϵõ������ݿ�������
ChopBlanks ����fetchrow_*�����Ƿ���ȥ�ո�
NUM_OF_PARAMS ��׼���������е�ռλ��placeholder-����������Ŀ
NULLABLE �������NULL
trace ִ�е��Ը���

MySQL�ض��ķ���

insertid ����һ��AUTO_INCREMENTֵ
is_blob ������BLOBֵ
is_key �����Ǽ�
is_num ���������ֵ�
is_pri_key ����������
is_not_null �������NULL����NULLABLE��
length �������ܵ��д�С
max_length ������ʵ���ϴ��ڵ������д�С
NAME ������
NUM_OF_FIELDS ���ص��ֶ���Ŀ
table �ڷ��صļ����еı���
type ���������

Perl��������һ�ڸ���ϸ�����������ڷ�������ֵ�ı�������Щ���壺

$dbh
���ݿ�����
$sth
��������
$rc
���ش��� (������һ��״̬��
$rv
����ֵ (������һ��������

����ֲDBI����

connect($data_source, $username, $password)
ʹ��connect����ʹ��һ�����ݿ����ӵ�����Դ��$data_sourceֵӦ����DBI:driver_name:��ʼ����DBD::mysql��������ʹ��connect�����ӣ�
$dbh = DBI->connect("DBI:mysql:$database", $user, $password);
$dbh = DBI->connect("DBI:mysql:$database:$hostname",
                    $user, $password);
$dbh = DBI->connect("DBI:mysql:$database:$hostname:$port",
                    $user, $password);

�����û���������δ���壬DBI�ֱ�ʹ��DBI_USER��DBI_PASS����������ֵ�������㲻ָ������������ȱʡΪ'localhost'�������㲻ָ��һ���˿ںţ���ȱʡΪMySQL��ȱʡ�˿�(3306)����Msql-Mysql-modules�汾1.2009��$data_sourceֵ����ijЩ���δʣ�

mysql_read_default_file=file_name
��ȡ��Ϊһ��ѡ���ļ��ġ�filename�����й�ѡ���ļ�����Ϣ����4.15.4 ѡ���ļ���
mysql_read_default_group=group_name
����ȡѡ���ļ�ʱ��ȱʡ��ͨ����[client]�顣ͨ��ָ��mysql_read_default_groupѡ�ȱʡ������[group_name]�顣
mysql_compression=1
�ڿͻ��ͷ�����֮��ʹ��ѹ��ͨ��(MySQL 3.22.3���Ժ�)��
mysql_socket=/path/to/socket
ָ�����������������ӵ�Unix�׽��ֵ�·����(MySQL 3.21.15���Ժ�)��

���Ը����������δʣ�ÿһ������ǰ��һ���ֺš����磬��������Ҫ������һ��DBI�ű���Ӳ�����û����Ϳ�������Դ��û�����~/.my.cnf��ѡ���ļ���ȡ�����ǣ�������������д����connect���ã�

$dbh = DBI->connect("DBI:mysql:$database"
                . ";mysql_read_default_file=$ENV{HOME}/.my.cnf",
                $user, $password);

�������ý���ȡ��ѡ���ļ���Ϊ[client]����������ѡ�����������ͬ�������飬����Ҳʹ��δ[perl]��ָ����ѡ�������ʹ�ã�

$dbh = DBI->connect("DBI:mysql:$database"
                . ";mysql_read_default_file=$ENV{HOME}/.my.cnf"
                . ";mysql_read_default_group=perl",
                $user, $password);
  
disconnect
disconnect���������ݿ��Ͽ����ݿ���������һ���������ӳ����˳�֮ǰ�����á�������
$rc = $dbh->disconnect;
  
prepare($statement)
׼��һ�������ݿ�����ִ�е�SQL���䲢�ҷ�����������($sth)��������ʹ��������execute������һ������������prepare��execute������SELECT����(����SELECT���䣬����SHOW��DESCRIBE��EXPLAIN)��������
$sth = $dbh->prepare($statement)
    or die "Can't prepare $statement: $dbh->errstr\n";
  
execute
execute����ִ��һ��׼���õ����䡣�Է�SELECT���䣬execute������Ӱ��������������û������Ӱ�죬execute����"0E0"��Perl�����������������档����SELECT���䣬executeֻ�������ݿ�������SQL��ѯ������Ҫʹ��������������fetch_*����֮һ�������ݡ�������
$rv = $sth->execute
          or die "can't execute the query: $sth->errstr;
  
do($statement)
do����׼������ִ��һ��SQL���䲢�ҷ�����Ӱ��������������û�����ܵ�Ӱ�죬do����"0E0"��Perl������Ϊ���������档��������ͨ�����������޷�׼����(������������������)������Ҫִ�ж���(���롢ɾ���ȵ�)�ķ�SELECT���䡣������
$rv = $dbh->do($statement)
        or die "Can't execute $statement: $dbh- >errstr\n";
    
quote($string)
quote������������ת�塱������string�е��κ������ַ��������������ⲿ�����š�������
$sql = $dbh->quote($string)
fetchrow_array
��������ȡ��һ�����ݲ�����Ϊһ���ֶ�ֵ���鷵������������
while(@row = $sth->fetchrow_array) {
        print qw($row[0]\t$row[1]\t$row[2]\n);
}
fetchrow_arrayref
��������ȡ��һ�����ݲ�����Ϊһ����һ���ֶ�ֵ���������÷�������������
while($row_ref = $sth->fetchrow_arrayref) {
        print qw($row_ref->[0]\t$row_ref->[1]\t$row_ref->[2]\n);
}
fetchrow_hashref
��������ȡһ�����ݲ��ҷ��ذ����ֶ���/ֵ�Ե�һ����ϣ����һ�����á�������������ʹ��������������������Ч��������
while($hash_ref = $sth->fetchrow_hashref) {
        print qw($hash_ref->{firstname}\t$hash_ref->{lastname}\t\
                $hash_ref- > title}\n);
}
  
fetchall_arrayref
�����������������ô�SQL���䱻���ص���������(��)��������һ�����������ã�������������ÿ�е����������á�����һ��Ƕ��ѭ������ȡ����ӡ���ݡ�������
my $table = $sth->fetchall_arrayref
                or die "$sth->errstr\n";
my($i, $j);
for $i ( 0 .. $#{$table} ) {
        for $j ( 0 .. $#{$table->[$i]} ) {
                print "$table->[$i][$j]\t";
        }
        print "\n";
}
  
finish
����û�и��������ݽ���������������ȡ�������������������ͷ������������κ��������ص�ϵͳ��Դ��������
$rc = $sth->finish;
rows
����������һ�������ı�(���¡�ɾ����)����������ͨ�����ڷ�SELECT��execute����֮�󡣷�����
$rv = $sth->rows;
NULLABLE
����һ����һ������ֵ���������ã���������ÿ����Ա��һ��TRUEֵ��ʾ���п��԰���NULLֵ��������
$null_possible = $sth->{NULLABLE};
NUM_OF_FIELDS
�������Ա�����һ��SELECT��SHOW FIELDS���䷵�ص��ֶ���Ŀ����������������һ�������Ƿ񷵻��˽�����һ����ֵ����һ����INSERT��DELETE��UPDATE�ķ�SELECT���䡣������
$nr_of_fields = $sth->{NUM_OF_FIELDS};
  
data_sources($driver_name)
������������һ�����飬������������'localhost'�ϵ�MySQL�������ɵõ������ݿ�����������
@dbs = DBI->data_sources("mysql");
ChopBlanks
��������ȷ��fetchrow_*�����Ƿ���ȥ������ֵ��ͷ��β�Ŀհס�������
$sth->{'ChopBlanks'} =1;
  
trace($trace_level)
��
trace($trace_level, $trace_filename)
trace�����������رո��١�����Ϊһ��DBI�෽������ʱ����Ӱ�������о����ĸ��١�����Ϊһ�����ݿ�������������������ʱ����Ӱ���Ը��������ĸ���(�;�����δ������)������$trace_levelΪ2���ṩ��ϸ���ټ���Ϣ������$trace_levelΪ0�Թرո��١��ټ�����ȱʡ����������׼��������������ָ��$trace_filename���ļ�������ģʽ�򿪲����������ٵľ������ֱ�д�����ļ���������
DBI->trace(2);                # trace everything
DBI->trace(2,"/tmp/dbi.out"); # trace everything to /tmp/dbi.out
$dth->trace(2);               # trace this database handle
$sth->trace(2);               # trace this statement handle

��Ҳ����ͨ������DBI_TRACE������������DBI���١���������Ϊ�ȼ��ڵ���DBI->(value)������ֵ����������Ϊ�ȼ��ڵ���DBI->(2,value)��·������

MySQL�ض��ķ���

������ʾ�ķ�����MySQL�ض��IJ��Ҳ���DBI��׼�IJ��֡��������м������ڲ�����ʹ�ã�is_blob��is_key��is_num��is_pri_key��is_not_null��length��max_length��table����Щ����DBI��׼����һ�ַ������ڣ�����������˵����

insertid
������ʹ��MySQL��AUTO_INCREMENT���ܣ��µ��Զ���1��ֵ���洢�����������
$new_id = $sth->{insertid};

��Ϊ��һ��ѡ����������ʹ��$dbh->{'mysql_insertid'}��

is_blob
����һ����һ������ֵ���������ã���������ÿ����Ԫ��һ��TRUEֵ������Ӧ������һ��BLOB��������
$keys = $sth->{is_blob};
  
is_key
����һ����һ������ֵ���������ã���������ÿ����Ԫ��һ��TRUEֵ������Ӧ�����Ǽ���������
$keys = $sth->{is_key};
is_num
����һ����һ������ֵ���������ã���������ÿ����Ԫ��һ��TRUEֵ������Ӧ���а�������ֵ��������
$keys = $sth->{is_key};
  
is_pri_key
����һ����һ������ֵ���������ã���������ÿ����Ԫ��һ��TRUEֵ������Ӧ������������������
pri_keys = $sth->{is_pri_key};
  
is_not_null
����һ����һ������ֵ���������ã���������ÿ����Ԫ��һ��FALSEEֵ�������п��԰���NULLֵ��������
$not_nulls = $sth->{is_not_null};

is_not_null������ʹ�ã�����ʹ��NULLABLE����(������������)����Ϊ����һ�� DBI ��׼��

length
��
max_length
��Щ������ÿ������һ�����д�С���������á�length����ָ��ÿ�п����е��������ܵijߴ� (���ڱ�������������)��max_length����ָ���ڽ�������ʵ�ʴ��ڵ������ߴ硣������
$lengths = $sth->{length};
$max_lengths = $sth->{max_length};
  
NAME
����һ����һ���������������á�������
$names = $sth->{NAME};
table
����һ����һ���������������á�������
$tables = $sth->{table};
type
����һ����һ�����������������á�������
$types = $sth->{type};

20.5.3 ������DBI/DBD��Ϣ

������ʹ��perldoc�����õ������Ĺ���DBI����Ϣ��

perldoc DBI
perldoc DBI::FAQ
perldoc DBD::mysql

��Ҳ����ʹ��pod2man��pod2html�ȹ���ת����������ʽ��

�����㵱Ȼ������DBI��ҳ���ҵ����µ�DBI��Ϣ��

http://www.symbolstone.org/technology/perl/DBI/index.html

20.6 MySQL Eiffel��װ

MySQL ContribĿ¼����Michael Ravits��д��һ��Eiffel��װ������

��Ҳ���������ҵ���http://www.netpedia.net/hosting/newplayer/

20.7 MySQL Java����(JDBC)

��2��ΪMySQL֧�ֵ�JDBC��������(twz��mm��������)����������http://www.mysql.com/Contrib�ҵ���Щ��һ�������������ĵ��������κ�JDBC�ĵ���������������ӵ�е�����MySQL�ض����ܵ��ĵ���

20.8 MySQL PHP API

PHP��һ���������ˡ�HTMLǶ��ʽ�ű����ԣ���������������̬��ҳ���������Դ�ȡ�������ݿ���֧�֣�����MySQL��PHP������Ϊһ�������ij������У�������Ϊ��Apache������һ��ʹ�õ�һ��ģ�顣

�ַ����ĵ�����PHP��վ�õ���

20.9 MySQL C++ APIs

��MySQL Contrib Ŀ¼�пɵõ�����API��

20.10 MySQL Python API

MySQL Contrib Ŀ¼����Joseph Skinner��д��һ��Python�ӿڡ�

��Ҳ����ʹ�ö�iODBC��Python�ӿ�����ȡһ��MySQL��������mxODBC

20.11 MySQL TCL API

TCL at binevolve��Contrib Ŀ¼����һ������msqltcl 1.50��һ��TCL�ӿڡ�


��һ��, ǰһ��, ��һ��, ����һ��