|
|
| 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