C语言调用msyql

9 篇文章 0 订阅

#include <stdio.h>
#include <string>
#include <cstring>
#include <mysql/mysql.h>
using namespace std;
int main (){
     MYSQL_ROW row;//用于提取每一行的结果
     MYSQL_RES *res;//用于保存查询结果
     MYSQL mysql;//生成一个mysql对象
     mysql_init(&mysql);//初始化mysql数据库 
     if(mysql_real_connect(&mysql,"localhost","root","password","databaseName",0,NULL,0)){
         //此方法是用于连接mysql数据库的,详细参数请参照:http:dev.mysql.com/doc/refman/5.1/zh/apis.html#mysql-real-connect
         //看文档是很有用的,参数对应数据库对象,链接地址,localhost是本地地址,root是登陆msyql的用户名,password是密码,databaseName是数据库的名字,
         //要保证数据库是存在的否则连接数据库失败
             printf("OK\n");//成功,输出OK
     }
     else {
             printf("ERORR\n");//失败输出ERORR
     }
     string sql = "select * from table";//用string是为了便于组合得到复杂的命令
    int t = mysql_query(&mysql,sql.c_str());//由于接口是C语言的所以要转换为C字符串
     if(mysql_errno(&mysql))puts("error");

    //mysql_errno(&mysql)用于查看是否操作出错,返回0是没有错,否则返回的就是一个非零数,是一个错误码(对应的错误名称可以在文档查到)
    //printf("%s",mysql_error(&mysql));可以直接打出错误名字  注意两个函数不一样啊。。。。
     if(t)
     {
         printf("Error");
     }else
     {
        res = mysql_store_result(&mysql);//mysql_store_result是一次性取出全部结果,mysql_use_result(&mysql)是一次取一个,与mysql_num_rows配合使用时只能用
                                         //mysql_store_result否则结果永远是0
         if(res)
         for(int i = 0;i < mysql_num_rows(res);i ++)//mysql_num_rows获取结果行数
         {
             row = mysql_fetch_row(res);// 获取一行结果
             if(row <= 0)break;
             for(int r = 0;r < mysql_num_fields(res);r++)//mysql_num_fields获取结果列
             {
                if(row) 
                    printf("%s\t",row[r]);//注意这里的row是一个指针,有可能是NULL,所以给string类型赋值时不能直接来要先判定下是不是NULL ,否则会段错误
             }
             puts("");
         }  
        mysql_free_result(res); //用完后free掉,否则就内存泄露了
     }
    mysql_close(&mysql);
     return 0;
}
下面是编译方法,要带链接库,一开始也是找不到的,你需要再装个东西,谷歌会找到,命令安装很快搞定。
g++ main -o main.c -L/usr/include/mysql -lmysqlclient
./main



        用C语言调用mysql可以用mysql提供的API完成。在linux下调用很简单,只要装好mysql,头文件包含mysql/mysql.h文件,就可以调用了,在windows下没试过,不过听说也挺麻烦的。代码详解看注释。另外还有个mysql++,是针对C++的api,但是需要额外装东西。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值