解析总结
1. mysql_init
的作用
mysql_init
用于初始化一个 MYSQL
结构体,为后续数据库连接和操作做准备。该结构体存储连接配置及状态信息,是 MySQL C API 的核心句柄。
示例:
c
MYSQL *conn = mysql_init(NULL); // 初始化连接句柄
2. mysql_real_connect
的参数
函数原型:
c
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. 连接示例
c
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 数据库的连接与基础操作。