C语言Mysql.h简单解析

测试环境mac os  /linux   

#include   一般是not find  这里的mysql.h 在/usr/local/mysql/include 中的:

MYSQL_FILED数据对象:

typedef struct st_mysql_field { //定义一个结构体

      char *name;                 /* Name of column */

      char *org_name;             /* Original column name, if an alias */

      char *table;                /* Table of column if column was a field */

      char *org_table;            /* Org table name, if table was an alias */

      char *db;                   /* Database for table */

      char *catalog;       /* Catalog for table */

      char *def;                  /* Default value (set by mysql_list_fields) */

      unsigned long length;       /* Width of column (create length) 无符号*/

      unsigned long max_length;   /* Max width for selected set */

      unsigned int name_length;

      unsigned int org_name_length;

      unsigned int table_length;

      unsigned int org_table_length;

      unsigned int db_length;

      unsigned int catalog_length;

      unsigned int def_length;

      unsigned int flags;         /* Div flags */

      unsigned int decimals;      /* Number of decimals in field */

      unsigned int charsetnr;     /* Character set */

      enum enum_field_types type; /* Type of field. See mysql_com.h for types */

      void *extension;

} MYSQL_FIELD;

给大家看一下链接对象MYSQL数据结构:

 typedef struct st_mysql

{

      NET net;/* Communication parameters */

      unsigned char *connector_fd;/* ConnectorFd for SSL */

      char *host,*user,*passwd,*unix_socket,*server_version,*host_info;

      char  *info, *db;

      struct charset_info_st *charset;

      MYSQL_FIELD *fields;

      MEM_ROOT field_alloc;

      my_ulonglong affected_rows;

      my_ulonglong insert_id; /* id if insert on table with NEXTNR */

      my_ulonglong extra_info; /* Not used */

      unsigned long thread_id; /* Id for connection in server */

      unsigned long packet_length;

      unsigned int port;

      unsigned long client_flag,server_capabilities;

      unsigned int protocol_version;

      unsigned int field_count;

      unsigned int server_status;
     
      unsigned int  server_language;

      unsigned int warning_count;

      struct st_mysql_options options;

      enum mysql_status status;

      my_bool free_me;    /* If free in mysql_close */

      my_bool reconnect;    /* set to 1 if automatic reconnect */

      /* session-wide random string */

      char    scramble[SCRAMBLE_LENGTH+1];

      my_bool unused1;

      void *unused2, *unused3, *unused4, *unused5;

      LIST  *stmts;    /* list of all statements */

      const struct st_mysql_methods *methods;

      void *thd;

      /*

        Points to boolean flag in MYSQL_RES  or MYSQL_STMT. We set this flag 

        from mysql_stmt_close if close had to cancel result set of this object.

      */

      my_bool *unbuffered_fetch_owner;

      /* needed for embedded server - no net buffer to store the 'info' */

      char *info_buffer;

      void *extension;

} MYSQL;

API函数:对象一定要初始化

 my_ulonglong STDCALL mysql_num_rows(MYSQL_RES *res);

unsigned int STDCALL mysql_num_fields(MYSQL_RES *res);

my_bool STDCALL mysql_eof(MYSQL_RES *res);

MYSQL_FIELD *STDCALL mysql_fetch_field_direct(MYSQL_RES *res, unsigned int fieldnr);

MYSQL_FIELD * STDCALL mysql_fetch_fields(MYSQL_RES *res);

MYSQL_ROW_OFFSET STDCALL mysql_row_tell(MYSQL_RES *res);

MYSQL_FIELD_OFFSET STDCALL mysql_field_tell(MYSQL_RES *res);

unsigned int STDCALL mysql_field_count(MYSQL *mysql);

my_ulonglong STDCALL mysql_affected_rows(MYSQL *mysql);

my_ulonglong STDCALL mysql_insert_id(MYSQL *mysql);

unsigned int STDCALL mysql_errno(MYSQL *mysql);

const char * STDCALL mysql_error(MYSQL *mysql);

const char *STDCALL mysql_sqlstate(MYSQL *mysql);

unsigned int STDCALL mysql_warning_count(MYSQL *mysql);

const char * STDCALL mysql_info(MYSQL *mysql);

unsigned long STDCALL mysql_thread_id(MYSQL *mysql);

const char * STDCALL mysql_character_set_name(MYSQL *mysql);

int  STDCALL mysql_set_character_set(MYSQL *mysql, const char *csname);


MYSQL * STDCALL mysql_init(MYSQL *mysql);
连接API:对象为空表示出错
 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 long clientflag);
选择数据库的类型,操作的数据:
 int STDCALL mysql_select_db(MYSQL *mysql, const char *db);

int STDCALL mysql_query(MYSQL *mysql, const char *q);

int STDCALL mysql_send_query(MYSQL *mysql, const char *q,unsigned long length);

int STDCALL mysql_real_query(MYSQL *mysql, const char *q,unsigned long length);

MYSQL_RES * STDCALL mysql_store_result(MYSQL *mysql);

MYSQL_RES * STDCALL mysql_use_result(MYSQL *mysql);

关闭数据连接:

 int STDCALL mysql_shutdown(MYSQL *mysql,enum mysql_enum_shutdown_levelshutdown_level);

向一个对象连接发送信号量(posix):

int STDCALL mysql_kill(MYSQL *mysql,unsigned long pid);
/*得到相关信息API,int类型API,0表示成功*/

int STDCALL mysql_ping(MYSQL *mysql);

const char * STDCALL mysql_stat(MYSQL *mysql);

const char * STDCALL mysql_get_server_info(MYSQL *mysql);

const char * STDCALL mysql_get_client_info(void);

unsigned long STDCALL mysql_get_client_version(void);

const char * STDCALL mysql_get_host_info(MYSQL *mysql);

unsigned long STDCALL mysql_get_server_version(MYSQL *mysql);

unsigned int STDCALL mysql_get_proto_info(MYSQL *mysql);

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

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

MYSQL_RES * STDCALL mysql_list_processes(MYSQL *mysql);

int STDCALL mysql_options(MYSQL *mysql,enum mysql_option option, const void *arg);

int STDCALL mysql_options4(MYSQL *mysql,enum mysql_option option, const void *arg1, const void *arg2);

int    STDCALL mysql_get_option(MYSQL *mysql, enum mysql_option option, const void *arg);

void STDCALL mysql_free_result(MYSQL_RES *result);

void STDCALL mysql_data_seek(MYSQL_RES *result,my_ulonglong offset);

MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);

unsigned long * STDCALL mysql_fetch_lengths(MYSQL_RES *result);

MYSQL_FIELD * STDCALL mysql_fetch_field(MYSQL_RES *result);

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

数据类型:

 typedef struct st_mysql_res {

      my_ulonglong  row_count;

      MYSQL_FIELD *fields;

      MYSQL_DATA *data;

      MYSQL_ROWS *data_cursor;

      unsigned long *lengths; /* column lengths of current row */

      MYSQL *handle;/* for unbuffered reads */

      const struct st_mysql_methods *methods;
    
      MYSQL_ROW row;/* If unbuffered read */

      MYSQL_ROW current_row;/* buffer to current row */
    
      MEM_ROOT field_alloc;

      unsigned int field_count, current_field;

      my_bool eof;                 /* Used by mysql_fetch_row */

      /* mysql_stmt_close() had to cancel this result */

      my_bool   unbuffered_fetch_cancelled;  

      void *extension;

} MYSQL_RES;

你可能感兴趣的:(linux类)