C语言连接MySQL数据库

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

#if defined(_WIN32) || defined(_WIN64)  //为了支持windows平台上的编译
#include <windows.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"
#include <winsock.h>
#include <iostream.h>
#include <string.h>
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<ELEMENTS_PER_LINE; 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<ELEMENTS_PER_LINE; 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.data[0],parameter.data[1],parameter.data[2],parameter.data[3],parameter.data[4],parameter.data[5],parameter.data[6],parameter.data[7],parameter.data[8],parameter.data[9],parameter.data[10],parameter.data[11],parameter.data[12],parameter.data[13],parameter.data[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);
    return 0;   //. 为了兼容大部分的编译器加入此行
}

 

/*
  程序注意事项:

    项目编译的时候需要用到的文件有:

       mysql.h    LIBCPD.LIB   libmysql.dll  LIBCD.LIB libmysql.lib my_alloc.h  my_list.h mysql_com.h  mysql_time.h mysql_version.h  typelib.h
       编译程序时候如果需要配置环境变量
    工程-->设置-->连接-->对象库/模块 里边添加 libmysql.lib环境变量
    此时需要注意的是libmysql.lib这个文件要和你的项目文件放在一起
*/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值