c/c++访问mysql(gcc)

本文介绍了如何在Linux环境下使用C/C++访问MySQL数据库,通过一个实例展示了如何编写和编译相关代码。作者强调了makefile在组织和编译项目中的重要性,并分享了自己的makefile配置。在学习过程中,作者遇到并解决了调用`mysql_real_connect`时参数不全的问题。文章末尾提供了注意事项和祝读者好运。
摘要由CSDN通过智能技术生成
近一段时间来在看linux下的C编程。根据我的经验,但凡学习一种新的东西,一定要找到一个引爆点。而我一直对网络、数据库相关的各项技术很关心。故就从这两个方面着手看资料。

从昨天下午开始,我在看C访问mysql。我找到了一篇很好的资料:http://www.hk8.org/old_web/linux/sql/ch13_01.htm 这个页面中带有一个示例,很有启发性。不过这个例子有一个小问题:调用 mysql_real_connect 时少一个参数,只要在最后加一个参数0即可。

这页是用C来访问,下一页就是使用C++来访问。而且提供了封装好的Connection Result 和 Row。特别好用。另外,还提供了一个使用这三个类的示例程序,不过在这个页上没有提供,需要到http://examples.oreilly.com/msql/页面上下载。查看第13章文件夹就可以了。不过这里要提醒大家一下,这是C++文件,需要用g++编译了!!而且文件很多,如果一个个地编译将是一个可观的工作量。而makefile正是来解决这个问题的。我本来不太懂这个东西。今天又找了些资料(http://mrbook.org/tutorials/make/),最后终于解决了。好高兴了啊!!

最后我把我的makefile贴出来:
all: demo
demo: select.o row.o result.o connection.o
    g++ select.o connection.o result.o row.o -L/usr/lib/mysql -I/usr/include/mysql -lmysqlclient -o demo
select.o: select.cc
    g++ -L/usr/lib/mysql -I/usr/include/mysql -c select.cc
connection.o: connection.cc connection.h
    g++ -L/usr/lib/mysql -I/usr/include/mysql -c connection.cc
result.o: result.cc result.h
    g++ -L/usr/lib/mysql -I/usr/include/mysql -c result.cc
row.o: row.cc row.h
    g++ -L/usr/lib/mysql -I/usr/include/mysql -c row.cc

有两点需要 注意
1、文件名最好就是makefile,同时注意大小写,这样直接make就行了,其可执行文件是demo;
2、每个g++命令前一定是一个Tab!!

这个页面在linux下用太费劲了,编辑命令全没了。 如果想用格式,只有自己用html标记!!幸好我的功底很好。

good luck!!
C++访问MySQL #include "stdafx.h" #include #include #include int main(int argc,char* argv[])   {     char *user ="root", *pwd ="123456", *dbname = "chardb";     MYSQL  mysql;     MYSQL_RES  *mysql_ret;     MYSQL_ROW  mysql_row;     unsigned  long  num_rows;     int  ret;     mysql_init(&mysql);     if(mysql_real_connect(&mysql,NULL,user,pwd,dbname,0,NULL,0))     {       printf("连接成功!n");       ret  =  mysql_query(&mysql,"select  *  from  accounts");       if(!ret)       {         printf("查询成功!n");         mysql_ret  =  mysql_store_result(&mysql);         if(mysql_ret  !=  NULL)         {           printf("存储结果成功!n");           num_rows  =  mysql_num_rows(mysql_ret);           if(num_rows  !=  0)           {             printf("%dn",num_rows);             while(mysql_row  =  mysql_fetch_row(mysql_ret))             {               printf("%st%st%st%st%st%sn",mysql_row[0],mysql_row[1],mysql_row[2],mysql_row[3],mysql_row[4],mysql_row[5]);             }           }           else           {             exit(-1);           }           mysql_free_result(mysql_ret);           exit(0);         }  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值