cygwin下用mysql的C语言api连接数据库详解转 c语言操作数据库

一、典型错误:

错误1:

命令:

gcc -I /usr/include/mysql/ -L /lib/-lmysqlclientmain.c

错误:
/tmp/ccT0KqUQ.o:main.c:(.text+0x2a): undefined reference to`mysql_init'
/tmp/ccT0KqUQ.o:main.c:(.text+0x2a): relocation truncated to fit:R_X86_64_PC32 against undefined symbol `mysql_init'
/usr/lib/gcc/x86_64-pc-cygwin/4.8.1/../../../../x86_64-pc-cygwin/bin/ld:/tmp/ccT0KqUQ.o: bad reloc address 0x0 in section `.pdata'
/usr/lib/gcc/x86_64-pc-cygwin/4.8.1/../../../../x86_64-pc-cygwin/bin/ld:final link failed: Invalid operation
cygwin下用mysql的C语言api连接数据库详解(转) c语言操作数据库
collect2: error: ld returned 1 exit status

分析:

娘哎,我怎么会知道-I,-L,-l这些选项要放最后面呢???修改如下:

gcc main.c -I /usr/include/mysql/ -L /lib/ -lmysqlclient

错误2:

命令:

gcc main.c-I /usr/include/mysql/ -L /lib/-lmysqlclient

错误:

collect2: error: ld terminated with signal 11 [Segmentation fault],core dumped

分析:

估计你是自己从mysql.com下载的connector。抱歉,你得用cygwin提供的。方法如下:

1.打开cygwin的setup.exe,一路next,直到到达"select packages"页

2.搜索libmysql

3.打开DatabaseDefault节点,选择"libmysqlclient-devel","libmysqlclient18"。

4.安装

二、具体流程

1./root/src/test/main.c

[cpp]viewplaincopy
  1. #include
  2. #include
  3. #include
  4. #include"mysql.h"
  5. voidhalt(MYSQL*,constchar*);
  6. intmain(intargc,char*argv[]){
  7. MYSQLmysql;
  8. //初始化mysql
  9. if(!mysql_init(&mysql))
  10. {
  11. halt(&mysql,"Mysqlinitfailed");
  12. }
  13. //连接
  14. if(!mysql_real_connect(&mysql,"127.0.0.1","root","123456","test",3306,"",0))
  15. {
  16. halt(&mysql,"Can'tconnecttomysqlserver");
  17. }
  18. //设置字符集
  19. if(0!=mysql_set_character_set(&mysql,"utf8")){
  20. halt(&mysql,"Can'tsetcharacter");
  21. }
  22. //查询test数据库的所有表
  23. constchar*sql="SHOWTABLES";
  24. if(0!=mysql_real_query(&mysql,sql,strlen(sql))){
  25. charmessage[200];
  26. sprintf(message,"QueryError:%s",sql);
  27. halt(&mysql,message);
  28. }
  29. //获得结果集
  30. MYSQL_RES*res=NULL;
  31. if(!(res=mysql_use_result(&mysql))){
  32. halt(&mysql,"Can'tfetchresult");
  33. }
  34. //输出结果
  35. MYSQL_ROWrow;
  36. while(row=mysql_fetch_row(res)){
  37. printf("table:%sn",row[0]);
  38. }
  39. //释放资源
  40. mysql_free_result(res);
  41. //关闭连接
  42. mysql_close(&mysql);
  43. return0;
  44. }
  45. voidhalt(MYSQL*mysql,constchar*message){
  46. fprintf(stderr,"message:%snerrno:%dnerror:%s",message,mysql_errno(mysql),mysql_error(mysql));
  47. exit(-1);
  48. }
2.编译&链接

gcc main.c -I /usr/include/mysql/ -L /lib/ -lmysqlclient

3.运行

  

爱华网本文地址 » http://www.413yy.cn/a/25101017/331164.html

更多阅读

详解买房时建筑面积与套内面积的区别 建筑面积计算实例详解

房地产商很多时候就靠这两个面积的转换来骗人,虽然现在还不到买房的时候,但是先搞清楚准备着,给自己提个醒:建筑面积包括套内面积。而套内面积包括套内使用面积和套内建筑面积。套内使用面积、墙体面积、阳台面积、公摊面积总和为房屋

焊接方法详解 氩弧焊的鱼鳞焊接技巧

焊接方法详解——简介焊接焊接是被焊工件的材质(同种或异种),通过加热或加压或两者并用,并且用或不用填充材料,使工件的材质达到原子间的建和而形成永久性连接的工艺过程。焊接方法详解——工具/原料焊接的方式焊接方发详解焊接方法详

猪的1001夜 说说我用过的免洗护发精华 免洗护发素怎么用

第35夜wechat个人公众号 guangchangdama后续会主要在那里更新哈前前后后尝试过不少护发精华,今天捋一捋说下用过的心得。 再强调下我喜欢的未必是你的最爱,我不喜欢的也未必您用就一无是处,我不是什么达人,讲话也有局限,希望大家看

声明:《cygwin下用mysql的C语言api连接数据库详解转 c语言操作数据库》为网友社会演员多分享!如侵犯到您的合法权益请联系我们删除