mysql.h
上传用户:jmzj888
上传日期:2007-01-02
资源大小:220k
文件大小:6k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB
  2.    This file is public domain and comes with NO WARRANTY of any kind */
  3. /* defines for libmysql */
  4. #ifndef _mysql_h
  5. #define _mysql_h
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9. #ifndef _global_h /* If not standard header */
  10. #include <sys/types.h>
  11. typedef char my_bool;
  12. typedef char byte;
  13. typedef char * gptr;
  14. #ifndef Socket_defined
  15. #ifdef __WIN32__
  16. #define Socket SOCKET
  17. #else
  18. typedef int Socket;
  19. #endif
  20. #endif
  21. #endif
  22. #include "mysql_com.h"
  23. #include "mysql_version.h"
  24. extern unsigned int mysql_port;
  25. extern char *mysql_unix_port;
  26. #define IS_PRI_KEY(n) ((n) & PRI_KEY_FLAG)
  27. #define IS_NOT_NULL(n) ((n) & NOT_NULL_FLAG)
  28. #define IS_BLOB(n) ((n) & BLOB_FLAG)
  29. #define IS_NUM(t) ((t) <= FIELD_TYPE_INT24)
  30. typedef struct st_mysql_field {
  31.   char *name; /* Name of column */
  32.   char *table; /* Table of column if column was a field */
  33.   char *def; /* Default value (set by mysql_list_fields) */
  34.   enum enum_field_types type; /* Type of field. Se mysql_com.h for types */
  35.   unsigned int length; /* Width of column */
  36.   unsigned int max_length; /* Max width of selected set */
  37.   unsigned int flags; /* Div flags */
  38.   unsigned int decimals; /* Number of decimals in field */
  39. } MYSQL_FIELD;
  40. typedef byte **MYSQL_ROW; /* return data as array of strings */
  41. typedef unsigned int MYSQL_FIELD_OFFSET; /* offset to current field */
  42. typedef struct st_mysql_rows {
  43.   struct st_mysql_rows *next; /* list of rows */
  44.   MYSQL_ROW data;
  45. } MYSQL_ROWS;
  46. typedef MYSQL_ROWS *MYSQL_ROW_OFFSET; /* offset to current row */
  47. typedef struct st_mysql_data {
  48.   unsigned int rows;
  49.   unsigned int fields;
  50.   MYSQL_ROWS *data;
  51.   MEM_ROOT alloc;
  52. } MYSQL_DATA;
  53. enum mysql_status { MYSQL_STATUS_READY,MYSQL_STATUS_GET_RESULT,
  54.     MYSQL_STATUS_USE_RESULT};
  55. typedef struct st_mysql {
  56.   NET net; /* Communication parameters */
  57.   char *host,*user,*passwd,*unix_socket,*server_version,*host_info,
  58.      *info,*db;
  59.   unsigned int port,client_flag,server_capabilities;
  60.   unsigned int protocol_version;
  61.   unsigned int field_count;
  62.   unsigned long thread_id; /* Id for connection in server */
  63.   unsigned long affected_rows;
  64.   unsigned long insert_id; /* id if insert on table with NEXTNR */
  65.   unsigned long extra_info; /* Used by mysqlshow */
  66.   enum mysql_status status;
  67.   MYSQL_FIELD *fields;
  68.   MEM_ROOT field_alloc;
  69.   my_bool free_me; /* If free in mysql_close */
  70.   my_bool reconnect; /* set to 1 if automatic reconnect */
  71. } MYSQL;
  72. typedef struct st_mysql_res {
  73.   unsigned long row_count;
  74.   unsigned int field_count, current_field;
  75.   MYSQL_FIELD *fields;
  76.   MYSQL_DATA *data;
  77.   MYSQL_ROWS *data_cursor;
  78.   MEM_ROOT field_alloc;
  79.   MYSQL_ROW row; /* If unbuffered read */
  80.   MYSQL_ROW current_row; /* buffer to current row */
  81.   unsigned int *lengths; /* column lengths of current row */
  82.   MYSQL *handle; /* for unbuffered reads */
  83.   my_bool eof; /* Used my mysql_fetch_row */
  84. } MYSQL_RES;
  85. #define mysql_num_rows(res) (res)->row_count
  86. #define mysql_num_fields(res) (res)->field_count
  87. #define mysql_eof(res) (res)->eof
  88. #define mysql_fetch_field_direct(res,fieldnr) ((res)->fields[fieldnr])
  89. #define mysql_fetch_fields(res) (res)->fields
  90. #define mysql_row_tell(res) (res)->data_cursor
  91. #define mysql_field_tell(res) (res)->current_field
  92. #define mysql_affected_rows(mysql) (mysql)->affected_rows
  93. #define mysql_insert_id(mysql) (mysql)->insert_id
  94. #define mysql_error(mysql) (mysql)->net.last_error
  95. #define mysql_errno(mysql) (mysql)->net.last_errno
  96. #define mysql_info(mysql) (mysql)->info
  97. #define mysql_reload(mysql) mysql_refresh((mysql),REFRESH_GRANT)
  98. #define mysql_thread_id(mysql) (mysql)->thread_id
  99. MYSQL *mysql_connect(MYSQL *mysql, const char *host,
  100.        const char *user, const char *passwd);
  101. MYSQL *mysql_real_connect(MYSQL *mysql, const char *host,
  102.     const char *user, const char *passwd,
  103.     const char *db,
  104.     unsigned int port,const char *unix_socket,
  105.     unsigned int clientflag);
  106. void mysql_close(MYSQL *sock);
  107. int mysql_select_db(MYSQL *mysql, const char *db);
  108. int mysql_query(MYSQL *mysql, const char *q);
  109. int mysql_real_query(MYSQL *mysql, const char *q,
  110.  unsigned int length);
  111. int mysql_create_db(MYSQL *mysql, const char *DB);
  112. int mysql_drop_db(MYSQL *mysql, const char *DB);
  113. int mysql_shutdown(MYSQL *mysql);
  114. int mysql_dump_debug_info(MYSQL *mysql);
  115. int mysql_refresh(MYSQL *mysql,unsigned int refresh_options);
  116. int mysql_kill(MYSQL *mysql,unsigned long pid);
  117. char *mysql_stat(MYSQL *mysql);
  118. char *mysql_get_server_info(MYSQL *mysql);
  119. char *mysql_get_client_info(void);
  120. char *mysql_get_host_info(MYSQL *mysql);
  121. unsigned int mysql_get_proto_info(MYSQL *mysql);
  122. MYSQL_RES *mysql_list_dbs(MYSQL *mysql,const char *wild);
  123. MYSQL_RES *mysql_list_tables(MYSQL *mysql,const char *wild);
  124. MYSQL_RES *mysql_list_fields(MYSQL *mysql, const char *table,
  125.    const char *wild);
  126. MYSQL_RES *mysql_list_processes(MYSQL *mysql);
  127. MYSQL_RES *mysql_store_result(MYSQL *mysql);
  128. MYSQL_RES *mysql_use_result(MYSQL *mysql);
  129. void mysql_free_result(MYSQL_RES *result);
  130. void mysql_data_seek(MYSQL_RES *mysql,unsigned int offset);
  131. MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *mysql, MYSQL_ROW_OFFSET);
  132. MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *mysql,MYSQL_FIELD_OFFSET offset);
  133. MYSQL_ROW mysql_fetch_row(MYSQL_RES *mysql);
  134. unsigned int *mysql_fetch_lengths(MYSQL_RES *mysql);
  135. MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *handle);
  136. unsigned int mysql_escape_string(char *to,char *from,unsigned int length);
  137. void mysql_debug(char *debug);
  138. /* new api functions */
  139. #define HAVE_MYSQL_REAL_CONNECT
  140. #ifdef __cplusplus
  141. }
  142. #endif
  143. #endif