C语言连接MySQL数据库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);