关于mysql数据库的简单例子

一.连接MySQL数据库

一个最简单的程序示例:

  1. #include <stdio.h>  
  2. #include "mysql.h"  
  3.   
  4. int main()  
  5. {  
  6.     MYSQL mysql;  
  7.     int t, r;  
  8.     mysql_init(&mysql);  
  9.   
  10.     if (!mysql_real_connect(&mysql, "localhost""root""supersmd""student", 0, NULL, 0))  
  11.         printf("Error connecting to database: %s\n", mysql_error(&mysql));  
  12.     else  
  13.         printf("Connected MySQL successfully!\n");  
  14.   
  15.     mysql_close(&mysql);  
  16.   
  17.     return 0;  
  18. }  

它的编译命令为:gcc -o connect connect.c -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient

如果报出链接错误,没有找到mysqlclient 库,检查一下是否安装了,没有的话可以:

sudo apt-get install libMySQLclient15-dev


步骤:

1.初始化MySQL的连接句柄

   在连接MySQL数据库之前,首先调用mysql_init()函数以初始化一个连接句柄。若建立成功,则返回一个新创建的链接句柄的指针;否则返回NULL

   mysql_init()函数的原型如下:

   MYSQL *mysql_init(MYSQL *);

2.实际连接数据库

   在调用mysql_init()函数初始化MySQL句柄以后,调用mysql_real_connect()函数实际进行与MySQL服务器的链接。

   mysql_real_connect()函数原型如下:

   MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, cosnt char *db, unsigned int port, const char *NAME_socket, unsigned long client_flag);

其中的参数含义:

    mysql 是MYSQL连接句柄的指针。

    host 既可以是主机名也可以是IP地址。如果连接的是本地机器,则其值为“localhost”

    user 指定登录MySQL服务器的用户名

    passwd 指定用户user的密码

    db 是数据库名称

    port 应该为0,不为0则将其值作为TCP/IP连接的端口号

    NAME_socket 默认为NULL,如不为NULL,则该字符串描述了应使用的套接字或命名管道

    client_flag 通常为0  


二. 数据查询

  1. #include <stdio.h>  
  2. #include <string.h>  
  3. #include "mysql.h"  
  4.   
  5. int main()  
  6. {  
  7.     MYSQL mysql;  
  8.     MYSQL_RES *res;     //该结构代表返回行的查询结果(SELECT,SHOW,DESCRIBE,EXPLAIN)  
  9.     MYSQL_ROW row;      //这是一行数据的“类型安全”表示,它指向含有一行数据的字符串数组。行号可以通过mysql_fetch_row()函数获得  
  10.     char *query;  
  11.     int flag, t;  
  12.   
  13.     mysql_init(&mysql);  
  14.     if (!mysql_real_connect(&mysql, "localhost""root""supersmd""student", 0, NULL, 0))    //若连接数据库失败  
  15.     {     
  16.         printf("Failed to connect to MySQL!\n");  
  17.         return 0;  
  18.     }     
  19.     else  
  20.         printf("Connected MySQL successfully!\n");  
  21.   
  22.     query = "select * from student";    //要查询的SQL语句  
  23.     flag = mysql_real_query(&mysql, query, (unsigned int)strlen(query));  
  24.     if (flag)   //非0查询失败  
  25.     {     
  26.         printf("query failed!\n");  
  27.         return 0;  
  28.     }     
  29.     else  
  30.         printf("[%s] made...\n", query);  
  31.   
  32.     res = mysql_store_result(&mysql);   //保存查询结果  
  33.     while (row = mysql_fetch_row(res))  
  34.     {     
  35.         for (t = 0; t < mysql_num_fields(res); t++)  
  36.             printf("%s ", row[t]);  
  37.         printf("\n");  
  38.     }     
  39.       
  40.     mysql_close(&mysql);  
  41.     return 0;  
  42. }  
函数说明:

   (1) int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length);

执行指定为带计数的字符串query的SQL查询。查询成功返回0;

   (2) mysql_real_query()的辅助函数及其用法

             

函数原型用法
mysql_store_result()将查询的全部结果读取到客户端。查询成功后必须调用mysql_store_result()
mysql_num_field()返回结果集中的行数
mysql_fetch_row()检索结果集的下一行

三.添加数据

  1. #include <stdio.h>  
  2. #include <string.h>  
  3. #include "mysql.h"  
  4.   
  5. int main()  
  6. {  
  7.     MYSQL mysql;  
  8.     MYSQL_RES *res;  
  9.     MYSQL_ROW row;  
  10.     char *query[2];  
  11.     int i, flag, r;  
  12.   
  13.     mysql_init(&mysql);  
  14.     if (!mysql_real_connect(&mysql, "localhost""root""supersmd""student", 0, NULL, 0))   
  15.     {     
  16.         printf("Failed to connect to MySQL!\n");  
  17.         return 0;  
  18.     }     
  19.     else  
  20.         printf("Connected MySQL successfully!\n");  
  21.     query[0] = "insert into student (sno, sname)values(1010,'kobe')";  
  22.     query[1] = "insert into student (sno, sname)values(1020,'TMC')";  
  23.   
  24.     for (i = 0; i < 2; i++)  
  25.     {     
  26.         if (mysql_real_query(&mysql, query[i], (unsigned int)strlen(query[i])))  
  27.         {     
  28.             printf("insert data %d failed!\n", i+1);  
  29.             return 0;  
  30.         }     
  31.     }     
  32.     mysql_close(&mysql);  
  33.     return 0;  
  34. }  

四.删除数据

  1. #include <stdio.h>  
  2. #include <string.h>  
  3. #include "mysql.h"  
  4.   
  5. int main()  
  6. {  
  7.     MYSQL mysql;  
  8.     MYSQL_RES *res;  
  9.     MYSQL_ROW row;  
  10.     char *query;  
  11.     int i, flag, r;  
  12.   
  13.     mysql_init(&mysql);  
  14.     if (!mysql_real_connect(&mysql, "localhost""root""supersmd""student", 0, NULL, 0))   
  15.     {     
  16.         printf("Failed to connect to MySQL!\n");  
  17.         return 0;  
  18.     }     
  19.     else  
  20.         printf("Connected MySQL successfully!\n");  
  21.     query = "delete from student where sno = '1001'";  
  22.   
  23.     if (!mysql_real_query(&mysql, query, (unsigned int)strlen(query)))  
  24.     {     
  25.         printf("delete data successfully!\n");  
  26.     }     
  27.     mysql_close(&mysql);  
  28.     return 0;  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值