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

 2022-10-27    372  

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

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

用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数据库操作的宏,也可以不定义留着后面直接写进代码

defineSELECT_QUERY"selectusernamefromtbb_userwhereuserid=%d" 
intmain(intargc,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>\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'tconnecttoengine!\n%s\n\n",mysql_error(&mysql)); 
perror(""); 
exit(1); 
} 
sprintf(qbuf,SELECT_QUERY,atoi(argv[1])); 
if(mysql_query(sock,qbuf)){ 
fprintf(stderr,"Queryfailed(%s)\n",mysql_error(sock)); 
exit(1); 
} 
if(!(res=mysql_store_result(sock))){ 
fprintf(stderr,"Couldn'tgetresultfrom%s\n",mysql_error(sock)); 
exit(1); 
} 
printf("numberoffieldsreturned:%d\n",mysql_num_fields(res)); 
while(row=mysql_fetch_row(res)){ 
printf("Theruserid#%d'susernameis:%s\n",atoi(argv[1]),(((row[0]==NULL)&&(!strlen(row[0])))?"NULL":row[0])); 
puts("queryok!\n"); 
} 
mysql_free_result(res); 
mysql_close(sock); 
exit(0); 
return0;

为了兼容大部分的编译器加入此行 } 编译的时候,使用下面的命令

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

./mysql_select 1

将返回如下结果:

numberoffieldsreturned:1 
Theruserid#1'susernameis:Michael 
queryok!

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

  •  标签:  
  • MySQL
  •  

原文链接:https://77isp.com/post/9892.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。