C语言连接MySQL数据库

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言连接MySQL数据库收藏

前几天公司让我做C语言和MySQL数据库的交互操作,费了九牛二虎之力之后总算做出来了,今天特地把源代码贴出来供大家学习;如有人想要打包项目可以加我QQ260990509,注明技术交流,即可获得打包之后的项目!

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

#include

#endif

#include

#include

#include "mysql.h"

#include

#include

#include

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

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

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

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

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

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

#define MAX_STRING_LENGTH 256

//定义元素个数

#define MAX_ELEMENT_LENGTH 33

//定义显示的列数

#define ELEMENTS_PER_LINE 15

typedef struct

{

char line[MAX_STRING_LENGTH];

char data[ELEMENTS_PER_LINE][MAX_ELEMENT_LENGTH];

}DATA;

void main()

{

//申明数据库操作函数

int insertData(DATA parameter);

//打开指定文件

FILE *fp=fopen("E:\\file.txt","r");

//创建结构体类型实体

DATA data;

memset(&data, 0x00, sizeof(DATA));

//得到一行数据

fgets(data.line, MAX_STRING_LENGTH, fp);

while (!feof(fp))

{

int i=0,index=0;

for(i=0; i

{

//分隔字符串按逗号分隔

sscanf(data.line+index,"%[^,]", data.data[i]);

index+=strlen(data.data[i])+1;

}

insertData(data);

printf("line=%s\n", data.line);

//循环打印,每行的数据分隔之后的数据

for(i=0; i

{

printf("data[%d]=%s\n", i,data.data[i]);

}

printf("\n\n");

//再次读取一行数据

fgets(data.line, MAX_STRING_LENGTH, fp);

}

}

//连接数据库执行插入数据操作参数为每次构造起来的实体指针

int insertData(DATA parameter)

{

//初始化MySQL服务器

mysql_init(&mysql);

//获得连接

if (!(sock = mysql_real_connect(&mysql,"localhost","root","19890505","test",0,NULL,0))) {

fprintf(stderr,"Couldn't connect to engine!\n%s\n\n",mysql_error(&mysql));

perror("");

exit(1);

}

//以指定格式构建差爱如语句字符串

sprintf(qbuf,"insert into postranceaction values

('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",parameter.dat a[0],parameter.data[1],parameter.data[2],param eter.data[3],parameter.data[4],paramet er.data[5],parameter.data[6],parameter.data[7],parameter.data[8],parameter.data[9],par ameter.data[10],param eter.data[11],parameter.data[12],parameter.data[13],parameter.d ata[14]);

//执行插入操作并判断是否插入成功,

if(mysql_query(sock,qbuf))

{

//如果插入数据出错,则告知系统用户

printf("插入数据出现错误\n");

printf("Couldn't get result from %s\n", mysql_error(sock));

}

else

{

//如果插入数据成功,告知系统用户插入数据成功

printf("当前数据插入成功\n");

}

//关闭数据库连接

mysql_close(sock);

return 0;

}

//C语言实现数据查询操作

int addData()

{

mysql_init(&mysql);

if (!(sock = mysql_real_connect(&mysql,"localhost","root","19890505","test",0,NULL,0))) {

fprintf(stderr,"Couldn't connect to engine!\n%s\n\n",mysql_error(&mysql));

perror("");

exit(1);

}

sprintf(qbuf,SELECT_QUERY,2);

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 is %d username is: %s\n",row[0],row[1]) ;

puts( "query ok !\n" ) ;

}

mysql_free_result(res);

mysql_close(sock);

exit(0);

相关文档
最新文档