很多人用到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
#endif
#include
#include
#include "mysql.h" //我的机器上该文件在/usr/local/include/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 \n\n");
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%s\n\n",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 %s\n", mysql_error(sock));
exit(1);
}
printf("number of fields returned: %d\n",mysql_num_fields(res));
while (row = mysql_fetch_row(res)) {
printf("Ther userid #%d 's username is: %s\n",
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数据库,进行连接、插入、修改、删除等操作
nodejs和C语言插入mysql数据库乱码问题的解决方法.docx
我们大家都知道用C语言对MySQL数据库进行操作可以说是一件很麻烦的事情,我们要进行连接、插入以及修改与删除等相关的操作,当然也有很多人会用MySQL数据库来开发一些项目。
在centos6.5的32位系统下,通过c连接mysql数据库,必须要通过command.txt里面的命令来执行query,insert,delete ,只需要修改文件名就可以了,肯定是可以运行的。
使用c语言连接mysql数据库,向其中插入数据并查询显示某条记录
① 实现通讯录的信息中包括姓名、电话号码、地址、邮箱等数据项。 ② 支持从文件读入通讯录 ③ 插入、删除、修改通讯录记录 ④ 可按姓名或电话号码对通讯录进行排序 ...⑥ 输出通讯录到数据库,数据库用mysql
主要介绍了nodejs和C语言插入mysql数据库乱码问题,需要的朋友可以参考下
用C语言对MySQL操作,在Linux环境下,C语言实现对MySQL数据库的插入、删除等操作。
快速:ycdb是用c编写的mysql数据库ORM,内置php扩展,众所周知,数据库ORM是非常耗时的操作,特别是对于PHP等解释性语言,对于项目而言,ORM所占的比例很高,因此在这里我将用C语言实现MySQL ORM操作,并使用C语言的...
实现了通过C语言简单操作Mysql数据库的插入操作,每步基本都有异常防护
本文完成一个基于 MySQL 的小型数据库设计,实现数据库的构建、数据的查询、插入、 与修改等功能
本书全面深入地介绍了MySQL的功能,主要内容包括MySQL、PHP、Apache、Perl等组件的安装与功能简介,mysql等一些重要系统管理工具和用户操作界面的使用,MySQL数据库系统设计的基础知识与用不同语言设计MySQL数据库的...
本书全面深入地介绍了MySQL的功能,主要内容包括MySQL、PHP、Apache、Perl等组件的安装与功能简介,mysql等一些重要系统管理工具和用户操作界面的使用,MySQL数据库系统设计的基础知识与用不同语言设计MySQL数据库的...
压缩包内包含客户端imclient.c 服务端imserver.c 以及makefile...程序流程,客户端通过读取图片数据然后通过socket将图片数据发送给服务端,服务端接收数据后,插入数据库。注意;数据库字段位blob类型,UTF8编码格式。
这是c语言和数据库结合的技术,希望对新手有一点帮助,谢谢大家的支持
这个模块其目前主要用于xoyo江湖的sns与kingsoft_xoyo自主研发的TCSQL数据库做数据同步,当有feed插入sns数据库,使用触 发器调用该模块,向tcsql数据库发送同步数据。也可以使用该模块与其它使用socket接口的数据库...
纵观众多流行的数据库接口,如OCI(Oracle API)、MySQL API和PostgreSQL API等,OCI提供的编程接口最为方便,实现方式也最为高效。SQLite作为一种简单灵活的嵌入式数据库也同样提供了该功能,但是实现方式并不像其他...