在 MySQL C API 中,MYSQL
结构体是用于表示与 MySQL 数据库服务器的一个连接。这个结构体包含了连接状态、错误信息、字符集信息、事务状态等与连接相关的所有信息。以下是 MYSQL
结构体的一些关键成员,但请注意,这个结构体是 MySQL 客户端库内部使用的,其具体实现可能会随着 MySQL 版本的不同而有所变化。
c
typedef struct st_mysql {
NET net; /* Communication parameters */
unsigned char *connector_fd; /* ConnectorFd for SSL */
char *host,*user,*passwd,*db;
char *unix_socket; /* Unix socket or named pipe */
unsigned int port;
unsigned long client_flag; /* Options used by the client */
unsigned long server_capabilities;/* Capabilities of the server */
unsigned int protocol_version; /* Protocol version */
unsigned int field_count; /* Number of fields in the result */
unsigned int server_status; /* Status from the server */
unsigned int server_language; /* Server language */
unsigned int thread_id; /* Id for connection in server */
unsigned long affected_rows; /* Rows affected by SQL query */
unsigned long insert_id; /* ID generated for AUTO_INCREMENT */
unsigned long extra_info; /* Special information from server */
unsigned int packet_length; /* Length of the client/server packet */
unsigned int status; /* Status of connection */
my_bool free_me; /* If free in mysql_close */
my_bool reconnect; /* Set to 1 if automatic reconnect */
struct st_mysql_options options; /* Options from mysql_options() */
enum mysql_status status_no; /* Status for completion of commands */
MYSQL_FIELD *fields; /* Result set metadata */
MEM_ROOT field_alloc; /*MEM_ROOT allocated for fields */
unsigned int server_capabilities; /* Capability flags from the server */
unsigned int server_status; /* Status from the server */
unsigned int server_language; /* Server language */
unsigned int thread_id; /* Id for connection in server */
unsigned long affected_rows; /* Rows affected by SQL query */
unsigned long insert_id; /* ID generated for AUTO_INCREMENT */
unsigned long extra_info; /* Special information from server */
unsigned int packet_length; /* Length of the client/server packet */
unsigned int status; /* Status of connection */
my_bool free_me; /* If free in mysql_close */
my_bool reconnect; /* Set to 1 if automatic reconnect */
struct st_mysql_options options; /* Options from mysql_options() */
enum mysql_status status_no; /* Status for completion of commands */
MYSQL_FIELD *fields; /* Result set metadata */
MEM_ROOT field_alloc; /*MEM_ROOT allocated for fields */
/* ... and more members ... */
} MYSQL;
请注意,上面的代码只是一个示例,实际的 MYSQL
结构体可能包含更多的成员,并且结构体的定义可能会随着 MySQL 的不同版本而有所变化。以下是一些关键成员的解释:
NET net;
: 网络通信相关的结构体,用于处理客户端和服务器之间的网络通信。char *host, *user, *passwd, *db;
: 分别代表数据库服务器的地址、用户名、密码和数据库名。unsigned int port;
: 数据库服务器的端口号。unsigned long client_flag;
: 客户端标志,用于设置客户端的行为。unsigned int protocol_version;
: 使用的 MySQL 协议版本。unsigned int field_count;
: 结果集中的字段数量。unsigned long affected_rows;
: 最后一个 SQL 语句影响的行数。unsigned long insert_id;
: 最后一个 SQL 插入操作生成的 AUTO_INCREMENT 值。MYSQL_FIELD *fields;
: 指向结果集元数据的指针。MEM_ROOT field_alloc;
: 用于分配结果集元数据的内存根结构。
由于MYSQL
结构体是内部使用的,开发者通常不需要直接访问其成员,而是通过 MySQL C API 提供的函数来操作。