C语言mysql.h简单解析

来源:互联网 发布:淘宝一件代发是真的吗 编辑:程序博客网 时间:2024/06/01 10:41

测试环境mac os  /linux   

#include<mysql.h>   一般是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_level

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


原创粉丝点击