��������  ����Linux

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

���룺����(yanzi)       ��ҳ��http://aosp.me


��һ��, ǰһ��, ��һ��, ���һ����Ŀ¼.


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()��

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

  • ��һ������Ӧ����һ���ִ�MYSQL�ṹ�ĵ�ַ���ڵ���mysql_real_connect()֮ǰ����������mysql_init()��ʼ��MYSQL�ṹ������������ӡ�
  • hostֵ������һ����������һ��IP��ַ�����host��NULL���ַ���"localhost"���ٶ��ǵ�����������һ�����ӡ����OS֧���׽���(Unix)�������ܵ�(Win32)��ʹ�����Ƕ�����TCP/IP����������ӡ�
  • user���������û���MySQL��¼ID�����user��NULL���ٶ��ǵ�ǰ�û�����Unix�£����ǵ�ǰ��¼������Windows ODBC�£�������ȷ��ָ����ǰ�û����֡���16.4 ������дODBC���������и�������
  • passwd����Ϊuser����������passwd��NULL��ֻ����user���ж�����һ���հ׿����ֶε��û�����Ŀ�������һ��ƥ�䡣���������ݿ���������MySQLȨ�ޣ�ʹ�û���ò�ͬ�Ŀ��ȡ���������Ƿ��Ѿ�ָ��һ�����ע�⣺��Ҫ��ͼ�ڵ���mysql_real_connect()ǰ���ܿ����������Զ����ͻ�API������
  • db�����ݿ��������db����NULL�����ӽ�ȱʡ���ݿ�����Ϊ���ֵ��
  • ���port����0��ֵ����TCP/IP���ӽ������˿ںš�ע��host�����������ӵ����͡�
  • ���unix_socket����NULL���ַ���ָ���׽��ֻ�Ӧ�ñ�ʹ�õ������ܵ���ע��host�����������ӵ����͡�
  • client_flagֵͨ����0�������ں����������¿��Ա�����Ϊ���б�־����ϣ�
    ��־���� ��ζ�ŵı�־
    CLIENT_FOUND_ROWS �����ҵ���(ƥ���)�����������ܵ�Ӱ���������
    CLIENT_NO_SCHEMA ������db_name.tbl_name.col_name�﷨������Ϊ��ODBC�������ʹ�ø��﷨�������﷨����������һ����������Ϊ��һЩODBC����׽���������õġ�
    CLIENT_COMPRESS ʹ��ѹ��Э�顣
    CLIENT_ODBC �ͻ���һ��ODBC�ͻ�����ʹmysqld��ö�ODBC���Ѻá�

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�����ⷢ��ʱ������ζ�ų�������������֮һ��

  • ��һ��malloc()ʧ��(���磬����������̫��)��
  • ���ݲ��ܱ���ȡ(�����������ϵ�һ������)��
  • ��ѯû�з�������(���磬����һ��INSERT��UPDATE��DELETE)��

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

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

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

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

  • ��ִ��һ��INSERT��UPDATE��DELETEʱ��mysql_affected_rows()�����ܵ����һ����ѯӰ���������һ�����������ʹ��һ��û��WHERE�Ӿ��DELETE�������ضϣ������죡����������£�mysql_affected_rows()����Ӱ��ļ�¼���������㡣
  • mysql_num_rows()���ؽ�������е���������mysql_store_result()��һ��mysql_store_result()���أ��Ϳ��Ե���mysql_num_rows()����mysql_use_result()��ֻ�������Ѿ���mysql_fetch_row()ȡ���������к󣬲��ܵ���mysql_num_rows()��
  • mysql_insert_id()�����ɽ�һ�в���һ������AUTO_INCREMENT�����ı��е�����ѯ���ɵ�ID����20.4.29 mysql_insert_id()��
  • ijЩ��ѯ(LOAD DATA INFILE ...��INSERT INTO ... SELECT ...��UPDATE)���ظ��ӵ���Ϣ������ɷ�mysql_info()���ء����䷵���ַ����ĸ�ʽ����mysql_info()�����������û�и��ӵ���Ϣ��mysql_info()����һ��NULLָ�롣

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�ӿڡ�


��һ��, ǰһ��, ��һ��, ���һ����Ŀ¼

��������  ����Linux