C语言链接数据库(MYSQL)

一、解释一下函数功能和用法
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。


二、上示例代码

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值