解析总结
1. mysql_init
的作用
mysql_init
用于初始化一个 MYSQL
结构体,为后续数据库连接和操作做准备。该结构体存储连接配置及状态信息,是 MySQL C API 的核心句柄。
示例:
MYSQL *conn = mysql_init(NULL); // 初始化连接句柄
2. mysql_real_connect
的参数
函数原型:
MYSQL *mysql_real_connect(MYSQL *mysql, // 由 mysql_init 初始化的连接句柄const char *host, // 服务器地址(如 "localhost" 或 IP)const char *user, // 用户名(如 "root")const char *passwd, // 密码const char *db, // 默认数据库名(可选)unsigned int port, // 端口号(默认 3306,若为 0 则使用默认值)const char *unix_socket,// Unix Socket 路径(通常为 NULL)unsigned long client_flag // 客户端标志(如 CLIENT_MULTI_STATEMENTS)
);
参数对照表
图片中的参数 | 实际参数名 | 说明 |
---|---|---|
server | host | 服务器地址 |
port | port | 端口号(若为 0,使用默认值 3306) |
unix_socket | unix_socket | Unix Socket 路径(通常填 NULL) |
user | user | 用户名 |
password | passwd | 密码 |
database | db | 默认连接的数据库(可选) |
client_flag | client_flag | 客户端选项(如是否允许多语句查询) |
3. 连接示例
MYSQL *conn = mysql_init(NULL);
if (!conn) {fprintf(stderr, "初始化失败\n");return;
}// 连接数据库
if (!mysql_real_connect(conn, // 句柄"localhost", // 服务器地址"root", // 用户名"password123", // 密码"mydb", // 默认数据库0, // 端口(0 表示默认 3306)NULL, // Unix Socket(NULL 表示默认)CLIENT_MULTI_STATEMENTS // 客户端标志
)) {fprintf(stderr, "连接失败: %s\n", mysql_error(conn));mysql_close(conn);return;
}
4. 数据库与表的操作
连接成功后,可通过其他 API 函数操作数据库和表:
- 切换数据库:
mysql_select_db(conn, "database2");
- 执行查询:
mysql_query(conn, "SELECT * FROM table1");
- 处理结果集:使用
mysql_store_result
或mysql_use_result
。
5. 注意事项
- 参数顺序:
mysql_real_connect
的参数顺序固定,需严格遵循。 - 端口与 Socket:
port
和unix_socket
一般不同时使用(若使用 Socket,端口填 0)。 - 资源释放:连接结束后需调用
mysql_close(conn)
释放资源。
通过以上步骤,即可完成 MySQL 数据库的连接与基础操作。