MYSQL 和C

来源:互联网 发布:软件外包公司 编辑:程序博客网 时间:2024/06/14 00:08

     

      最近做的一个项目要用到历史数据库,由于费用紧张就下了一个MYSQL.MYSQL是一种小型关系型数据库管理系统,其体积小、速度快、总体拥有成本低。开始安装的时候选的是CUSTTOM,安装完在VS里添加包含文件和库文件的时候,发现MYSQL文件夹下没有这两个文件夹。重新安装MYSQL,选complete安装完后,这时在MYSQL文件下就有了include 和lib这两个文件夹。把这两文件夹添加到工程。编译通过,运行的时候出出现“没有找到libmysql.dll”错误。把mysql/ bin下的libmysql.dll复制到C:/WINDOWS/system,就OK了。记得在头文件里要包含mysql.h和libmysql.lib。

     

      用C语言操作MYSQL数据库,主要用到的API函数如下例子:

-------------------------------------------------------------------------------------------------------------------------------------------

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

  mysql_init(&mysql);  //初始化MySQL服务器

 //获得连接
    if (!(sock = mysql_real_connect(&mysql,"localhost","root","","avc2",0,NULL,0))) {
        fprintf(stderr,"Couldn't connect to engine!/n%s/n/n",mysql_error(&mysql));
        perror("");
        exit(1);
    }

    

 -------------------------------------------------------------------------------------------------------------------------------------------

char sql_command[1000];

 

//创建表

 sprintf(sql_command,"create table %s(id INT(10),sd INT(10),stn_descr VARCHAR(45), sbus_descr VARCHAR(45),kv     FLOAT,isbus INT(10))",tabname_daily_kv);
 if(mysql_query(sock,sql_command))
 {
  printf("Couldn't get result from %s/n", mysql_error(sock));
  printf("/n Warning---%ld",__LINE__); }

 

 -------------------------------------------------------------------------------------------------------------------------------------------

 

//插入内容
sprintf(sql_command,"insert into %s(id,sd,stn_descr,sbus_descr,kv,isbus)values(%d,%d,'%s','%s',%f,%d)",tabname_daily_kv,j,k,stn_descr,sbus_descr,vp->vday288[k],m);
   if(mysql_query(sock,sql_command))

 {
    printf("Couldn't get result from %s/n", mysql_error(sock));
    printf("/n Warning ---%ld",__LINE__);
   }

 

 

 -------------------------------------------------------------------------------------------------------------------------------------------

 

//更新表

sprintf(sql_command,"update %s set kv=%lf where sd=%ld and stn_descr='%s' and sbus_descr='%s'",tabname_daily_kv,vp->vday288[vp->sd],vp->sd,stn_descr,sbus_descr);
  if(mysql_query(sock,sql_command))
  {
   printf("Couldn't get result from %s/n", mysql_error(sock));
   printf("/n Warning --%ld",__LINE__);
  }

-------------------------------------------------------------------------------------------------------------------------------------------

 

 用C语言操作MYSQL,主要用到的API函数是 mysql_query(a,b). a参数是连接数据库返回的数据库连接句柄,b参数是mysql的操作语句,也就是在commond输入的语句,比如select, update,insert等。