免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3327 | 回复: 9
打印 上一主题 下一主题

C语言连接mysql [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-30 15:05 |只看该作者 |倒序浏览
本帖最后由 canigreen 于 2011-11-30 15:11 编辑

编译参数为:gcc -o my mysql.c -I /usr/local/mysql/include/mysql/ -L /usr/local/mysql/lib/mysql/ -lmysqlclient
编译的时候会出现错误,确认过,指针类型是一样的,但不知道为什么会出现错误,C语言代码在后面:

  1. [root@XXXX work]# gcc -o my mysql.c -I /usr/local/mysql/include/mysql/ -L /usr/local/mysql/lib/mysql/ -lmysqlclient
  2. mysql.c: In function ‘main’:
  3. mysql.c:40: warning: assignment from incompatible pointer type
复制代码
执行输入会出来非常多的其它信息,不知道怎么回事,还希望在行的人能指点一二,感激不尽:
执行程序后输出结果如下,除了前三段记录是要的,其它的都是多出来的,不知道是从哪儿来的,C语言代码在后面:
  1. Connected...
  2. mysql_num_fields is 5
  3. 2       1       feeds   5d8745cd7e10fa00731a1bed9759ab1afed18437        2011-11-22 00:08:56     oXic</ord       
  4. 4       3       feeds   ea5f71be6fdc143c790f72248799da5f1a22e0d7        2011-11-22 00:16:29     o
  5. 6       4       feeds   a6a2400c7efb15111352c1912eb3f43caadf56b5        2011-11-25 19:12:56     tion>
  6.   <collation name="geostd8_general_ci"  id="92" order="Georgian"        flag="primary"/>
  7.   <collation name="geostd8_bin"         id="93" order="Binary"          flag="binary"/>
  8. </charset>

  9. <charset name="binary">
  10.   <description>Binary pseudo charset</description>
  11.   <collation name="binary"      id="63" order="Binary">
  12.     <flag>primary</flag>
  13.     <flag>compiled</flag>
  14.   </collation>
  15. </charset>

  16. <charset name="cp932">
  17.   <family>Japanese</family>
  18.   <description>SJIS for Windows Japanese</description>
  19.   <alias>ms_cp932</alias>
  20.   <alias>sjis_cp932</alias>
  21.   <alias>sjis_ms</alias>
  22.   <collation name="cp932_japanese_ci"    id="95" order="Japanese">
  23.     <flag>primary</flag>
  24.     <flag>compiled</flag>
  25.   </collation>
  26.   <collation name="cp932_bin"    id="96" order="Binary">
  27.     <flag>binary</flag>
  28.     <flag>compiled</flag>
  29.   </collation>
  30. </charset>

  31. <charset name="eucjpms">
  32.   <family>Japanese</family>
  33.   <description>UJIS for Windows Japanese</description>
  34.   <alias>eucjpms</alias>
  35.   <alias>eucJP_ms</alias>
  36.   <alias>ujis_ms</alias>
  37.   <alias>ujis_cp932</alias>
  38.   <collation name="eucjpms_japanese_ci"    id="97" order="Japanese">
  39.     <flag>primary</flag>
  40.     <flag>compiled</flag>
  41.   </collation>
  42.   <collation name="eucjpms_bin"    id="98" order="Japanese">
  43.     <flag>binary</flag>
  44.     <flag>compiled</flag>
  45.   </collation>
  46. </charset>

  47. </charsets>


  48. The number of no is :18
  49. 代码如下:
复制代码
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "mysql.h"
  4. #include "string.h"

  5. int main()
  6. {
  7.         MYSQL mysql;
  8.         MYSQL_RES *res;
  9.         MYSQL_ROW *row;
  10. /*      MYSQL_FIELD *field; */
  11.         int j;
  12.         int no;
  13.         char *query;
  14.         int r,t;

  15.         /* Connect to mysql */
  16.         mysql_init(&mysql);
  17.         if(!mysql_real_connect(&mysql,"localhost","root","1352456","redminedb",0,NULL,0))
  18.         {
  19.                 printf("Error connecting to databases:\n%si\n",mysql_error(&mysql));
  20.                 return 1;
  21.         }
  22.         else
  23.                 printf("Connected...\n");


  24.         query="select * from tokens";
  25.         t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));
  26.         if(t)
  27.         {
  28.                 printf("Error making query:%s\n",mysql_error(&mysql));
  29.                 return 1;
  30.         }
  31.         res=mysql_store_result(&mysql);
  32.         j=mysql_num_fields(res);

  33.         no=0;
  34.         printf("mysql_num_fields is %d\n",j);
  35.         while(row=mysql_fetch_row(res))
  36.         {
  37.                 for(t=0;t<=j;t++)
  38.                 {
  39.                         printf("%s\t",row[t]);
  40.                         no++;
  41.                 }
  42.                 printf("\n");
  43.         }
  44.         printf("The number of no is :%d\n",no);
  45.         mysql_close(&mysql);
  46.         return 0;
  47. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-11-30 15:15 |只看该作者
  1. [root@xxxx work]# ./my
  2. Connected...
  3. mysql_num_fields is 5
  4. 2       1       feeds   5d8745cd7e10fa00731a1bed9759ab1afed18437        2011-11-22 00:08:56
  5. 4       3       feeds   ea5f71be6fdc143c790f72248799da5f1a22e0d7        2011-11-22 00:16:29
  6. 6       4       feeds   a6a2400c7efb15111352c1912eb3f43caadf56b5        2011-11-25 19:12:56
  7. The number of no is :15
复制代码
测试出来了,原来是数组越界了,不好意思,多了一个“=”号
但是编译的时候,还是会提示出错,希望有经验的人指导一下,谢谢:
  1. [root@xxxx work]# gcc -o my mysql.c -I /usr/local/mysql/include/mysql/ -L /usr/local/mysql/lib/mysql/ -lmysqlclient
  2. mysql.c: In function ‘main’:
  3. mysql.c:40: warning: assignment from incompatible pointer type
复制代码

论坛徽章:
0
3 [报告]
发表于 2011-11-30 15:31 |只看该作者
回复 2# canigreen


    再加个-lz试试
手册上这么写的
  1. CFG=/usr/local/mysql/bin/mysql_config
  2. sh -c "gcc -o progname `$CFG --cflags` progname.c `$CFG --libs`"
复制代码

论坛徽章:
0
4 [报告]
发表于 2011-11-30 15:38 |只看该作者
回复 3# jeung


    感谢您的回复,加了还是一样的丫:

  1. [root@xxxx work]# gcc -o my mysql.c -I /usr/local/mysql/include/mysql/ -L /usr/local/mysql/lib/mysql/ -lmysqlclient -lz
  2. mysql.c: In function ‘main’:
  3. mysql.c:41: warning: assignment from incompatible pointer type
  4. [root@xxxx work]# CFG=/usr/local/mysql/bin/mysql_config
  5. [root@xxxx work]# sh -c "gcc -o progname `$CFG --cflags` progname.c `$CFG --libs`"
  6. gcc: progname.c: No such file or directory
  7. [root@xxxx work]# sh -c "gcc -o progname `$CFG --cflags` mysql.c `$CFG --libs`"         
  8. mysql.c: In function ‘main’:
  9. mysql.c:41: warning: assignment from incompatible pointer type
  10. [root@xxxx work]# sh -c "gcc -o progname `$CFG --cflags` mysql.c `$CFG --libs` -lz"
  11. mysql.c: In function ‘main’:
  12. mysql.c:41: warning: assignment from incompatible pointer type
  13. [root@xxxx work]# sh -c "gcc -o progname `$CFG --cflags` mysql.c `$CFG --libs` -lz -lmysqlclient"
  14. mysql.c: In function ‘main’:
  15. mysql.c:41: warning: assignment from incompatible pointer type
  16. [root@xxxx work]#
复制代码

论坛徽章:
0
5 [报告]
发表于 2011-11-30 16:04 |只看该作者
回复 4# canigreen


    看清楚函数原型
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

论坛徽章:
0
6 [报告]
发表于 2011-11-30 16:22 |只看该作者
回复 5# jeung

在程序开头处有定义row的结构体指针的
  1.         MYSQL_ROW *row;
复制代码

论坛徽章:
0
7 [报告]
发表于 2011-11-30 16:29 |只看该作者
回复 6# canigreen


    直接跟你说吧,你把这句里的星号去掉
回头好好学学c吧

论坛徽章:
0
8 [报告]
发表于 2011-11-30 19:37 |只看该作者
调用函数时吧&去了吧,指针不用这个

论坛徽章:
0
9 [报告]
发表于 2011-11-30 20:16 |只看该作者
回复 8# 风吹过夏天

mysql只定义了变量,没有定义成指针的

论坛徽章:
0
10 [报告]
发表于 2011-11-30 20:17 |只看该作者
回复 7# jeung


    3Q!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP