当前位置:首页 > 系统运维 > 正文内容

用C语言如何对MySQL数据库进行操作

a8116255316年前 (2010-05-18)系统运维11

我们大家都知道用C语言对MySQL数据库进行操作可以说是一件很麻烦的事情,大家要进行连接、插入以及修改与删除等相关的操作,当然也有很多人会用MySQL数据库来开发一些项目。

有时为了性能,我们会直接用C语言来开发相关的模块,尤其在我们的web应用中,虽然PHP、jsP等脚本均提供了MySQL的接口,但是显然直接使用C语言具有更好的安全性和性能,Michael以前用PHP开发的多个项目中就使用了C语言编写的这类接口,然后再编译到php里面,供php脚本直接使用,这方面的话题就不多说了,下面主要说一下在Linux下如何用C语言连接MySQL数据库,并且读取里面的数据返回,同时如何进行编译。

这里的大部分代码参考了MySQL发行包里面的.c源文件,大家也可以去里面找找相关的代码,下面这段代码实现了连接到本地MySQL服务器上9tmd_bbs_utf8数据库,从数据表tbb_user中根据输入的userid取得该用户的用户名并打印输出到终端。

if defined(_win32) || defined(_WIN64)为了支持windows平台上的编译

#include <windows.h> #endif  #include <stdio.h> #include <stdlib.h> #include "mysql.h" 

我的机器上该文件在/usr/local/include/mysql下

定义MySQL数据库操作的宏,也可以不定义留着后面直接写进代码

define SELECT_QUERY "select username from tbb_user where userid = %d"  int mAIn(int argc, char **argv)char **argv 相当于 char *argv[]  {  

MYSQL mysql,*sock;定义数据库连接的句柄,它被用于几乎所有的MySQL函数

MYSQL_RES *res;查询结果集,结构类型

MYSQL_FIELD *fd ;包含字段信息的结构

MYSQL_ROW row ;存放一行查询结果的字符串数组

char qbuf[160];存放查询sql语句字符串

if (argc != 2) { //检查输入参数  fprintf(stderr,"usage : mysql_select <userid>nn");  exit(1);  }  mysql_init(&mysql);  if (!(sock = mysql_real_connect(&mysql,"localhost","dbuser","dbpwd","9tmd_bbs_utf8",0,NULL,0))) {  fprintf(stderr,"Couldn't connect to engine!n%snn",mysql_error(&mysql));  perror("");  exit(1);  }  sprintf(qbuf,SELECT_QUERY,atoi(argv[1]));  if(mysql_query(sock,qbuf)) {  fprintf(stderr,"Query failed (%s)n",mysql_error(sock));  exit(1);  }  if (!(res=mysql_store_result(sock))) {  fprintf(stderr,"Couldn't get result from %sn", mysql_error(sock));  exit(1);  }  printf("number of fields returned: %dn",mysql_num_fields(res));  while (row = mysql_fetch_row(res)) {  printf("Ther userid #%d 's username is: %sn", atoi(argv[1]),(((row[0]==NULL)&&(!strlen(row[0])))   "NULL" : row[0])) ;   puts( "query ok !n" ) ;   }   mysql_free_result(res);  mysql_close(sock);  exit(0);  return 0;  

为了兼容大部分的编译器加入此行

}

编译的时候,使用下面的命令

gcc -o mysql_select ./mysql_select.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient (-lz) (-lm) 后面两个选项可选,根据您的环境情况运行的时候,执行下面的命令

./mysql_select 1

将返回如下结果:

number of fields returned: 1  Ther userid #1 's username is: Michael  query ok ! 

上面的代码我想大部分都能看明白,不明白的可以参考一下MySQL提供的有关C语言API部分文档,各个函数都有详细说明,有时间我整理一份常用的API说明出来。

上面说了这么多内容,是关于对用C语言操作MySQL数据库的介绍,不知道各位对MySQL的认识是不是更上一层楼了,时时关注IT *** ,学习最新Mysql技术。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/20380.html

分享给朋友:

“用C语言如何对MySQL数据库进行操作” 的相关文章

微软今天正式停止对windows 7的主流支持

微软今天正式停止对windows 7的主流支持

北京时间1月13日消息,根据计划,微软将于2015年1月13日正式结束对Windows 7SP1的“主流支持”,而这也标志着“扩展支持”阶段的开始,这个阶段将于2020年1月14日结束。 2013年10月份,微软终止销售独立的Windows 7系统安装包,并要求制造商于2014年10月份停止生...

解决windows 7无法将程序锁定到任务栏或附到开始菜单的方法

解决windows 7无法将程序锁定到任务栏或附到开始菜单的方法

出现该问题的原因是由于使用第三方优化软件消除快捷方式的小箭头引起的。 1、在开始搜索框中键入“regedit”,按回车键打开注册表编辑器。 2、依次定位到以下分支:HKEY_CLASSES_ROOTlnkfile。 3、在lnkfile项上鼠标右键单击“新建”——“字符串值”。...

windows 7系统开机后出现黑屏提示Windows无法启动

windows 7系统开机后出现黑屏提示Windows无法启动

一些用户的Windows 7系统开机后出现黑屏,代码为 Windows无法启动: WindowsSystem32ConfigSystem”。这个问题该如何修复呢?现在小编就给大家分析一下吧。 其实这个代码的意思是引导文件丢失了,引导文件(NTLDR)一般存放于C盘根目录下,是一个具有隐藏和只读属性...

windows 7系统开机提示Windows驱动器未就绪的故障原因及解决方法

windows 7系统开机提示Windows驱动器未就绪的故障原因及解决方法

 故障分析: 主要原因应该是不存在软盘驱动器或驱动器未安装,找到故障原因后,Windows 7 32位系统只要将软盘驱动器禁用就可以了。 解决措施: 1、右键点击计算机,选择管理,打开计算机管理窗口; 2、在计算机管理中,找到设备管理器,在右边的软盘控制器中右击,选择卸载即可。 以...

Windows7播放电影视频蓝屏无论什么格式都会蓝屏

Windows7播放电影视频蓝屏无论什么格式都会蓝屏

问:我在Windows 7 Ultimate X64下播放电影视频时,不管什么格式都会蓝屏,错误代码“0x00000124”。换解码器、播放器不行,换驱动、内存也不管用。在不同的电脑上也试过,仍然蓝屏。请问是哪里的问题,如何解决 答:64位 Windows 7直接使用PotPlayer x64就...

windows 7怎么设置密码永不过期?

windows 7怎么设置密码永不过期?

下面小编以Windows 7 64位为例,介绍下密码是如何设置永不过期的。  1、在桌面上打开“开始”菜单,或者点击“Win+R”快捷键将“运行”对话框打开。  2、运行对话框打开后,在里面中输入“lusrmgr.msc”字符命令,就可以打开“本地用户和组程序”。...