免费注册 查看新帖 |

Chinaunix

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

c与mysql连接和一个简单查询的例子(源) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-03-23 11:59 |只看该作者 |倒序浏览
今天给新来的同事做mysql培训,用到的一个例子:
连接数据库test 用户名root密码abc
在里面有一个username的表,describe username结果如下
mysql>; describe username;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(10)     | YES  |     | NULL    |       |
| username | varchar(32) |      | PRI |         |       |
+----------+-------------+------+-----+---------+-------+

mysql>; select * from username;
+------+----------+
| id   | username |
+------+----------+
|    1 | sfs      |
+------+----------+
1 row in set (0.00 sec)


本文目的查找执行select id from username这个语句并打印结果

  1. #include <unistd.h>;
  2. #include <arpa/inet.h>;
  3. #include <stdio.h>;
  4. #include <stdlib.h>;
  5. #include <string.h>;
  6. #include <sys/types.h>;
  7. #include <sys/socket.h>;
  8. #include <netinet/in.h>;
  9. #include <mysql/mysql.h>;
  10. #include <signal.h>;
  11. #include <errno.h>;
  12. #include <syslog.h>;
  13. MYSQL mysql;
  14. main()
  15. {
  16.         char host[32]="localhost";
  17.         char user[32]="root";
  18.         char passwd[32]="abc";
  19.         char dbname[32]="test";       
  20.        
  21.         if( mysql_init(&mysql) == NULL )
  22.         {
  23.                 syslog(LOG_USER|LOG_INFO,"inital mysql handle error\n");
  24.                 return 1;
  25.         }
  26.         if (mysql_real_connect(&mysql,host,user,passwd,dbname,0,NULL,0) == NULL)
  27.         {
  28.                 syslog(LOG_USER|LOG_INFO, "Failed to connect to database: Error: %s\n",mysql_error(&mysql));
  29.                 return 1;
  30.         }
  31.         else syslog(LOG_USER|LOG_INFO, "connect to database: \n");
  32.         find_ps();       
  33.         db_close();
  34.         return 0;
  35. }
  36. int db_close()
  37. {
  38.         mysql_close(&mysql);
  39.          return 0;
  40. }


  41. int  find_ps ()
  42. {
  43.         MYSQL_ROW m_row;
  44.         MYSQL_RES *m_res;
  45.         char sql[1024],username[32];
  46.         int res=1;
  47.         int *id;
  48.         sprintf(sql,"select id from username");
  49.         if(mysql_query(&mysql,sql) != 0)
  50.         {
  51.                 syslog(LOG_USER|LOG_INFO, "select ps_info Error: %s\n",mysql_error(&mysql));
  52.                 return res;
  53.         }
  54.         m_res = mysql_store_result(&mysql);
  55.         if(m_res==NULL)
  56.         {
  57.                 syslog(LOG_USER|LOG_INFO, "select username Error: %s\n",mysql_error(&mysql));
  58.                 res = 3;
  59.                 return res;
  60.         }
  61.         if(m_row = mysql_fetch_row(m_res))
  62.         {
  63.                 printf("m_row=%d\n",atoi(m_row[0]));
  64.                 res = 0;               
  65.         }
  66.         mysql_free_result(m_res);
  67.         return res;
  68. }
复制代码

编译命令
gcc -g connect_db.c -L/usr/lib/mysql -lmysqlclient -lz
注意:
如果/tmp/ccTGmMS21.o: In function `main':
/tmp/ccTGmMS21.o(.text+0x11): undefined reference to `mysql_init'
那么参数增加-L/usr/lib/mysql -lmysqlclient
如果
usr/lib/mysql/libmysqlclient.a(my_compress.o): In function `my_uncompress':
my_compress.o(.text+0xaa): undefined reference to `uncompress'
那么增加-lz参数

相关文章
http://forums.devshed.com/t2352/s.html?highlight=perl+mysql+connection(DBI.pm)

论坛徽章:
0
2 [报告]
发表于 2004-03-23 14:11 |只看该作者

c与mysql连接和一个简单查询的例子(源)

good

论坛徽章:
0
3 [报告]
发表于 2004-03-23 16:16 |只看该作者

c与mysql连接和一个简单查询的例子(源)

   good  very good

论坛徽章:
0
4 [报告]
发表于 2004-03-24 12:25 |只看该作者

c与mysql连接和一个简单查询的例子(源)

能否能留下QQ?

论坛徽章:
0
5 [报告]
发表于 2004-03-24 14:16 |只看该作者

c与mysql连接和一个简单查询的例子(源)


有没有c  和oracle的啊?

论坛徽章:
0
6 [报告]
发表于 2004-03-24 16:49 |只看该作者

c与mysql连接和一个简单查询的例子(源)

谢谢楼住,补充一句:
MYSQL权威指南里说的更详细,把具体MYSQL C的API接口函数都一一列举了,如果用C和MYSQL的人,应该买本看看

论坛徽章:
0
7 [报告]
发表于 2004-03-24 18:29 |只看该作者

c与mysql连接和一个简单查询的例子(源)

偶也很菜阿
看代码应该看得出来
qq:13578444
欢迎交流php+mysql+gcc

论坛徽章:
0
8 [报告]
发表于 2004-03-26 17:45 |只看该作者

c与mysql连接和一个简单查询的例子(源)

个人认为:

作为学习的例子比较清晰,但是如果真的做项目开发的话,千万不要这么用。最好将数据库操作统一封装起来再使用。如果是C++的话,用自己的类封装;如果是C的话,最好单独写个文件,把数据库操作封装成自己的函数。既可以精简代码,增加可读性,又便于数据库的移植和数据库操作的改进。

论坛徽章:
0
9 [报告]
发表于 2004-03-28 17:50 |只看该作者

c与mysql连接和一个简单查询的例子(源)

太好了

论坛徽章:
0
10 [报告]
发表于 2004-03-28 18:22 |只看该作者

c与mysql连接和一个简单查询的例子(源)

收藏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP