打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C语言链接数据库

一、解释一下函数功能和用法
1.mysql_real_connect
函数原型:MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)
参数说明:
host:本地用localhost或127.0.0.1,远程写IP;
user、passwd:登陆数据库的用户名密码
db:数据库名
port:数据库所用的端口(MySQL一般为3306)
unix_socket:先写个NULL(官方解释:如果unix_socket不是NULL,该字符串描述了应使用的套接字或命名管道)
client_flag:先写个0(指定特定功能)


2.mysql_real_query
函数原型:int mysql_real_query(MYSQL *mysql, const char *query, unsigned int length)
参数说明:
query:SQL语句;
length:SQL语句长度


3.mysql_store_result
函数原型:MYSQL_RES *mysql_store_result(MYSQL *mysql)
返回值说明:具有多个结果的MYSQL_RES结果集合。如果出现错误,返回NULL。


4.mysql_fetch_row
函数原型:MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
参数说明:具有多个结果的MYSQL_RES结果集合

返回值说明:在mysql_store_result()之后使用时,如果没有更多的行可检索时,mysql_fetch_row()返回NULL。


二、上示例代码

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "mysql.h"
  5. int main() {
  6. MYSQL conn;
  7. int res;
  8. MYSQL_RES * result;
  9. MYSQL_ROW row;
  10. mysql_init(&conn);
  11. if (mysql_real_connect(&conn, "***.***.***.***", "usre_name", "password", "DataBase_name", port, NULL, 0)) {
  12. printf("coneect mysql successful\n请选择功能:\n");
  13. int choose;
  14. char str1[20], str2[20];
  15. char insert_query[80];
  16. char delete_query[50] = "delete from age where name='";
  17. char select_query[] = "select * from age";
  18. printf("1.insert\n2.select\n3.delete\n");
  19. while (scanf("%d", &choose)) {
  20. switch (choose) {
  21. case 1:
  22. printf("姓名 年龄:\n");
  23. memset(insert_query, 0, sizeof(insert_query));
  24. //insert
  25. scanf("%s %s", str1, str2);
  26. strcat(insert_query, "insert into age values('");
  27. strcat(insert_query, str1);
  28. strcat(insert_query, "',");
  29. strcat(insert_query, str2);
  30. strcat(insert_query, ")");
  31. printf("SQL语句: %s\n", insert_query);
  32. res = mysql_query(&conn, insert_query);
  33. if (!res) {
  34. printf("insert %lu rows\n", (unsigned long)mysql_affected_rows(&conn));
  35. }
  36. else {
  37. printf("insert error\n");
  38. }
  39. break;
  40. case 2:
  41. //select
  42. printf("SQL语句: %s\n", select_query);
  43. if (mysql_query(&conn, select_query) != 0) {
  44. fprintf(stderr, "查询失败!\n");
  45. exit(1);
  46. }
  47. else {
  48. if ((result = mysql_store_result(&conn)) == NULL) {
  49. fprintf(stderr, "保存结果集失败!\n");
  50. exit(1);
  51. }
  52. else {
  53. while ((row = mysql_fetch_row(result)) != NULL) {
  54. printf("name is %s , ", row[0]);
  55. printf("age is %s\n", row[1]);
  56. }
  57. }
  58. }
  59. break;
  60. case 3:
  61. printf("姓名:\n");
  62. scanf("%s", str1);
  63. strcat(delete_query, str1);
  64. strcat(delete_query, "'");
  65. //delete
  66. printf("SQL语句: %s\n", delete_query);
  67. res = mysql_real_query(&conn, delete_query, (unsigned int)strlen(delete_query));
  68. if (!res) {
  69. printf("delete successful\n");
  70. }
  71. else {
  72. printf("delete error\n");
  73. }
  74. break;
  75. }
  76. }
  77. mysql_close(&conn);
  78. }
  79. return 0;
  80. }


三、结果截图



四、注意点

由于MySQL所用的头文件不是C语音标准库,所以一定要加上外部库,不然编译不过。

找不到库的,要先安装libmysqlclient-dev(整套流程教程传送门:https://www.cnblogs.com/zhuyp1015/p/3561470.html)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
c/vc/c++ 将文件保存到mysql数据库(longblob类型)
C语言连接Mysql数据库示例代码
乱码处理
php – 如何演示二阶SQL注入?
MySQL 触发器
MySQL之表的创建与使用篇
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服