您的位置:首页 > 编程语言 > C语言/C++

C语言Mysql.h简单解析

2018-03-14 09:43 197 查看
测试环境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_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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: