|
|
This document is available in: English Castellano ChineseGB Deutsch Francais Nederlands Portugues Russian Turkce Polish |
by Özcan Güngör <ozcangungor(at)netscape.net> ��������: I use Linux since 1997. Freedom, flexibility and opensource. These are the properties I like. Ŀ¼: |
The MySQL C APIժҪ: ����ƪ��������ǽ�ѧ����ôʹ��MySQL ��C APIs(Application Programming Interfaces ��̽ӿ�)��Ϊ�˺ܺõ��˽���ƪ���£�����Ҫ�߱�����ǰ��֪ʶ:
|
MYSQL
���´�����������������ݿ��ͨѶ����
typedef struct st_mysql { NET net; /* Communication parameters */ gptr connector_fd; /* ConnectorFd for SSL */ char *host,*user,*passwd,*unix_socket, *server_version,*host_info,*info,*db; unsigned int port,client_flag,server_capabilities; unsigned int protocol_version; unsigned int field_count; unsigned int server_status; unsigned long thread_id; /* Id for connection in server */ my_ulonglong affected_rows; my_ulonglong insert_id; /* id if insert on table with NEXTNR */ my_ulonglong extra_info; /* Used by mysqlshow */ unsigned long packet_length; enum mysql_status status; MYSQL_FIELD *fields; MEM_ROOT field_alloc; my_bool free_me; /* If free in mysql_close */ my_bool reconnect; /* set to 1 if automatic reconnect */ struct st_mysql_options options; char scramble_buff[9]; struct charset_info_st *charset; unsigned int server_language; } MYSQL;
MYSQL_RES
��δ��뷵�ز�ѯ������С����ص����ݳ�Ϊ�����ݼ���
typedef struct st_mysql_res { my_ulonglong row_count; unsigned int field_count, current_field; MYSQL_FIELD *fields; MYSQL_DATA *data; MYSQL_ROWS *data_cursor; MEM_ROOT field_alloc; MYSQL_ROW row; /* If unbuffered read */ MYSQL_ROW current_row; /* buffer to current row */ unsigned long *lengths; /* column lengths of current row */ MYSQL *handle; /* for unbuffered reads */ my_bool eof; /* Used my mysql_fetch_row */ } MYSQL_RES;
MYSQL_ROW
����ṹ�������е�һ����ȫ��ʾ��������ʹ���Կ��ַ������Ĵ�����Ϊ����������������Ƕ�����, Ҳ��û�а����κ��ַ���
typedef struct st_mysql_field { char *name; /* Name of column */ char *table; /* Table of column if column was a field */ char *def; /* Default value (set by mysql_list_fields) */ enum enum_field_types type; /* Type of field. Se mysql_com.h for types */ unsigned int length; /* Width of column */ unsigned int max_length; /* Max width of selected set */ unsigned int flags; /* Div flags */ unsigned int decimals; /* Number of decimals in field */ } MYSQL_FIELD;
my_ulonglong
����������������mysql_affected_rows() ��mysql_num_rows()��mysql_insert_id() ���������ṩ��Χ0 ��1.84.e19 ��֧�֡���һЩϵͳ, ��ͼ��ӡ��my_ulonglong���͵�ֵ�Dz��е�.Ҫ��ʾ������ֵ, ʹ��%lu printf ��ʽ������ת����unsigned long���;����ˡ�����:
printf(Number of rows: %lu\n", (unsigned long)
mysql_num_rows(result));
typedef unsigned long my_ulonglong;
ǰ���Ѿ�˵����MySQL�Ŀ��ļ���mysqlclient������ڱ���MySQL�����ʱ���б�Ҫ����-lmysqlclient����ѡ�MySQL��ͷ�ļ���/usr/include/mysqlĿ¼��(����Linux�ķ��а汾�IJ�ͬ�����Ŀ¼Ҳ������ͬ)�������ij���ͷ���������е�������ӣ�
#include <mysql/mysql.h>
MySQL�ı������ͺͺ��������������ͷ�ļ�����
Ȼ��������Ҫ�����������ݿ�ı��������Լ���ô����
MYSQL *mysql;
���������ݿ�֮ǰ������Ҫ�������º�����ʼ�����������
mysql_init(MYSQL *mysql)
Ȼ��
MYSQL * STDCALL 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 clientflag);
�ú������������ӵ����ݿ⡣host��MySQL����������������user�ǵ�¼���û�����passwd�ǵ�¼���룬db��Ҫ���ӵ����ݿ⣬port��MySQL��������TCP/IP�˿ڣ�unix_socket���������ͣ�clientflag��MySQL���г�ODBC���ݿ�ı�ǡ�����ƪ���µ��иñ�����0������Ѱ�����������������0��
���ڿ����������ݿ⣬���в�ѯ�ˣ�
char *query;
ʹ������ַ������ǿ��Դ����κ�SQL��ѯ�����в�ѯ��ִ�������ѯ�ĺ����ǣ�
int STDCALL mysql_real_query(MYSQL *mysql, const char *q, unsigned int length);mysql������ǰ���ù��ı�����q��SQL��ѯ��䣬length�������ѯ���ij��ȡ������ѯ�ɹ�����������0��
��ѯ֮������Ҫ��һ��MYSQL_RES������ʹ�ò�ѯ�Ľ�����������д������������
MYSQL_RES *res;Ȼ��
mysql_use_result(MYSQL *query)�ú���������ѯ�����
���ܿ��Ժ����ز�ѯ�ˣ�Ҫ�������ѯ�Ľ����Ҫ�õ������ĺ�������һ���ǣ�
MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);�ú����ѽ��ת���ɡ����顱�������ע��ˣ��ú������ص���MYSQL_ROW�������͡�������䴴�������ı�����
MYSQL_ROW row;��ǰ�����͵ģ�����row��һ���ַ������顣Ҳ����˵��row[0]������ĵ�һ��ֵ��row[1]������ĵڶ���ֵ...��������mysql_fetch_row��ʱ���ű���row��ȡ�ý������һ������ݡ������˽����β�����ú�������һ��ֵ���������Ҫ�ر�������ӣ�
mysql_close(MYSQL *mysql)
unsigned int STDCALL mysql_num_fields(MYSQL *mysql);����������ر������ж��ٸ��ֶΡ�
ȡ�á����ݼ�������Ŀ���ã�
my_ulonglong STDCALL mysql_num_rows(MYSQL_RES *res);
my_ulonglong STDCALL mysql_affected_rows(MYSQL *mysql);
��������������õ���INSERT, DELETE, UPDATE��ѯ���Ӱ��ġ����ݼ�����Ŀ��ע��ú������ص�����������my_ulonglongһЩʾ�����룺
#include <mysql/mysql.h> #include <stdio.h> void main(){ MYSQL *mysql; MYSQL_RES *res; MYSQL_ROW row; char *query; int t,r; mysql_init(mysql); if (!mysql_real_connect(mysql,"localhost","mysql", "mysql","deneme",0,NULL,0)) { printf( "Error connecting to database: %s\n",mysql_error(mysql)); } else printf("Connected...\n"); query="select * from Deneme"; t=mysql_real_query(mysql,query,(unsigned int) strlen(query)); if (t) { printf("Error making query: %s\n", mysql_error(mysql)); } else printf("Query made...\n"); res=mysql_use_result(mysql); for(r=0;r<=mysql_field_count(mysql);r++){ row=mysql_fetch_row(res); if(row<0) break; for(t=0;t<mysql_num_fields(res);t++){ printf("%s ",row[t]); } printf("\n"); } mysql_close(mysql); }
|
��ҳ��LinuxFocus�༭��ά��
© Özcan Güngör, FDL LinuxFocus.org |
������Ϣ:
|
2004-05-26, generated by lfparser version 2.46