ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MySQL C/C++链接MySQL使用

MySQL C/C++链接MySQL使用 bit::Shadow✧(≖ ◡ ≖✿目录MySQL链接初始化 MYSQL*链接MySQL表操作增删改☆查本文介绍了MySQL C API的基本使用流程通过mysql_init初始化连接mysql_real_connect建立数据库连接使用mysql_query执行增删改查操作查询时用mysql_store_result获取结果集mysql_fetch_row逐行读取数据mysql_fetch_fields获取字段信息实现对表数据的完整操作。代码示例清晰适合初学者学习。MySQL链接初始化 MYSQL*MYSQL *mysql_init(MYSQL *mysql);MYSQL *my mysql_init (nullptr); if(nullptrmy) { fprintf(stderr, 连接失败: %s\n, mysql_error(my)); return 1; }mysql_init(NULL)里的NULL是传给mysql_init()的参数表示由 MySQL 库自己分配MYSQL结构体内存而不是复用你传入的已有内存。链接MYSQL *mysql_real_connect( MYSQL *mysql, // 结构体 const char *host, // 主机名/IP const char *user, // 用户名 const char *passwd, // 用户密码 const char *db, // 连接的数据库 unsigned int port, // MySQL 端口号如 8080 const char *unix_socket, // nullptr unsigned long client_flag // 0 );// 链接mysql if(nullptrmysql_real_connect (my, host, user, password, db, sqlPort, nullptr,0)) { fprintf(stderr, 连接失败: %s\n, mysql_error(my)); return 2; }MySQL表操作query询问int mysql_query(MYSQL *mysql, const char *query);int n mysql_query (my, insert stu(name) values(张三)); if(n ! 0) { fprintf (stderr, query failed:%s\n, mysql_error (my)); return 3; }增删改在query参数直接输入即可//增删改 const char *inser insert stu(name) values(张三); // delete from 表名 定位条件(一定要跟定位条件否则删除整张表) const char *del delete from stu where nameJack; // update 表名 set 列名新值 定位条件 const char *up update stu set name李四 where name张三;//不要把表名stu忘了 int n mysql_query (my, sqlcomd); if(n ! 0) { fprintf (stderr, query failed:%s\n, mysql_error (my)); return 3; }☆查MYSQL_RES *mysql_store_result(MYSQL *mysql);返回的res是获取query中select存储到MYSQL*结构体中的信息。MYSQL_ROW mysql_fetch_row(MYSQL_RES *result); MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *result);mysql_fetch_row行访问使用游标每次调用在传入的result参数内记录调用情况相当于迭代器因此需要在循环体内部。mysql_fetch_fields这是列的一次性全部返回。我们常使用mysql_fetch_fields来获取列名、列类型、能不能为null等信息。// 查 const char *sel select* from stu; int n mysql_query (my, sel); if(n ! 0) { fprintf (stderr, query failed:%s\n, mysql_error (my)); return 3; } // 获取query中select存储到MYSQL*结构体中的信息mysql_store_result MYSQL_RES *res mysql_store_result (my); if(res nullptr) { fprintf (stderr, mysql_store_result failed:%s\n, mysql_error (my)); return 4; } int rows mysql_num_rows (res); int fields mysql_num_fields (res); //内容 // MYSQL_FIELD* field mysql_fetch_field (res); // 一次返回一个与列一致 // 头行列名打印 MYSQL_FIELD *field mysql_fetch_fields (res); //一次性全部返回 for (int i 0; i fields;i) { cout field[i].name \t; } cout endl; // 剩余行内容 for (int i 0; i rows;i) { MYSQL_ROW row mysql_fetch_row (res); for (int j 0; j fields;j) { cout row[j] \t; } cout endl; }感谢支持长期连载欢迎关注
返回列表