[C.C++] C语言连接数据库

333 0
Honkers 2025-4-2 08:07:25 | 显示全部楼层 |阅读模式


接下来我简单的介绍一下怎么用C语言连接数据库。

  1. 初始化数据库
  2. 创建数据库连接
  3. 执行增删改查语句
  4. 关闭数据库连接

一、初始化数据库

  1. // 数据库初始化
  2. MYSQL mysql;
  3. MYSQL* ret1 = mysql_init(&mysql);
  4. if (ret1 == nullptr)
  5. {
  6. std::cerr << "init_error" << std::endl;
  7. exit(-1);
  8. }
  9. /*****************
  10. 返回值:
  11. 如果没有足够的内存来分配新对象,则为空。
  12. *****************/
复制代码

二、创建数据库连接

  1. // 数据库连接
  2. MYSQL* ret2 = mysql_real_connect(&mysql, host.c_str(), user.c_str(), passwd.c_str(), db.c_str(), port, nullptr, 0);
  3. if (ret2 == nullptr)
  4. {
  5. std::cerr << "connect_error" << std::endl;
  6. exit(-1);
  7. }
  8. /*****************
  9. 参数:
  10. 1、MYSQL *mysql ===> 创建的数据库变量
  11. 2、const char *host ===> 主机号, 如果是本地可以用"127.0.0.1"
  12. 3、const char *user ===> 用户名
  13. 4、const char *passwd ===> 密码
  14. 5、const char *db ===> 数据库名
  15. 6、unsigned int port ===> 端口号
  16. 7、剩下的两个参数一个置空,一个置0就行
  17. 返回值:
  18. 如果没有足够的内存来分配新对象,则为空。
  19. *****************/
复制代码

三、执行增删改查语句

这个部分需要分成两类:增删改、查。增删改只需要考虑这个语句执行的是否是正常的,但是查询这个操作还需要通过返回值得到查询的结果。

1、增删改

  1. // 执行增删改
  2. std::string sql = "insert into user (name, age) values ('wangwu', 19);";
  3. int ret3 = mysql_query(&mysql, sql.c_str());
  4. if (ret3)
  5. {
  6. std::cerr << "query_error" << std::endl;
  7. exit(-1);
  8. }
复制代码

2、查

  1. 执行查询语句
  2. 得到结果集
  3. 得到结果集的行数和列数
  4. 遍历即可

  1. // 执行查找语句
  2. std::string sql = "select * from user;";
  3. int ret4 = mysql_query(&mysql, sql.c_str());
  4. if (ret4)
  5. {
  6. std::cerr << "query_error" << std::endl;
  7. exit(-1);
  8. }
  9. // 得到结果集
  10. MYSQL_RES* res = mysql_store_result(&mysql);
  11. // 得到行数和列数
  12. int row = mysql_num_rows(res);
  13. int field = mysql_num_fields(res);
  14. // 得到列名
  15. MYSQL_FIELD* fields = mysql_fetch_fields(res);
  16. for (int i = 0; i < row; i++)
  17. {
  18. // 注意,不能直接打印,需要指定里面的name属性
  19. std::cout << fields[i].name << " ";
  20. }
  21. std::cout << "\n";
  22. // 遍历得到结果集
  23. MYSQL_ROW line;
  24. for (int i = 0; i < row; i++)
  25. {
  26. line = mysql_fetch_row(res);
  27. for (int j = 0; j < field; j++)
  28. {
  29. std::cout << line[j] << " ";
  30. }
  31. std::cout << "\n";
  32. }
复制代码

四、执行增删改查语句

  1. // 关闭数据库
  2. mysql_close(&mysql);
复制代码

cout << “\n”;
}

  1. # 四、执行增删改查语句
  2. [外链图片转存中...(img-9HkkinoN-1733452583128)]
  3. ```cpp
  4. // 关闭数据库
  5. mysql_close(&mysql);
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

荣誉红客

关注
  • 4010
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行