这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » c语言连接mysql原代码实例

共6条 1/1 1 跳转至

c语言连接mysql原代码实例

高工
2017-12-30 11:50:33     打赏

不需要按照ODBC驱动。通过mysql自带的3306端口进行数据传输。
注意libmysq.dll与对应服务器版本的关系。

[cpp] view plain copy
  1. // uplog.cpp : Defines the entry point for the console application.  

  2. //  

  3.   

  4. #include "stdafx.h"  

  5. #include   

  6. #include   

  7. #include   

  8. #include   

  9.   

  10. #pragma comment(lib, "libmysql.lib")  

  11.   

  12. struct DBINFO  

  13. {  

  14.     char host[20];  

  15.     char user[20];  

  16.     char passwd[20];  

  17.     char db[20];  

  18. };  

  19.   

  20. struct LOGS{  

  21.     char sn[20];  

  22.     char mac[20];  

  23.     char biosV[30];  

  24.     char biosD[30];  

  25.     char ec[10];  

  26.     char touchFW[20];  

  27.     char oaKey[35];  

  28.     int  batlvl;  

  29. };  

  30.   

  31. void help(void)  

  32. {  

  33.     fprintf(stderr, "uplog ");  

  34.     exit(1);  

  35. }  

  36.   

  37. int uplog(DBINFO *info, LOGS *logs)  

  38. {  

  39.     MYSQL *my = NULL;  

  40.     char sql[512];  

  41.   

  42.     printf("\nUpload test logs to DB server....\n");  

  43.   

  44.     my = mysql_init(NULL);  

  45.     if (my == NULL)  

  46.     {  

  47.         fprintf(stderr, "\n] Error: Unable to init APIs...\n");  

  48.         return 1;  

  49.     }  

  50.   

  51.     if(mysql_real_connect(my, info->host, info->user, info->passwd, NULL, MYSQL_PORT, NULL, 0) == 0)  

  52.     {  

  53.         fprintf(stderr, "\n] Error: Unable to connect server...\n");  

  54.         if(my!=NULL)  

  55.             mysql_close(my);  

  56.         return 1;  

  57.     }  

  58.   

  59.     if (mysql_select_db(my, info->db)<0)  

  60.     {  

  61.         fprintf(stderr, "\n] Error: Unable to select db(%s)...\n", info->db);  

  62.         if(my!=NULL)  

  63.             mysql_close(my);  

  64.         return 1;  

  65.     }  

  66.   

  67.     sprintf(sql, "INSERT INTO `testlogs` (`Serial_number`, `Mac_addr`, `BIOS_version`, `BIOS_date`, `EC_version`, `Touch_FW`, `OA_KEY`, `Battery_level`) VALUES ("  

  68.         "'%s', '%s', '%s', '%s', '%s', '%s', '%s', %d)",logs->sn, logs->mac, logs->biosV, logs->biosD, logs->ec, logs->touchFW, logs->oaKey, logs->batlvl);  

  69.   

  70.     if(mysql_query(my, sql) != 0)  

  71.     {  

  72.         printf("\n] Error: Unable to execute query...\n");  

  73.         if (my!=NULL)  

  74.             mysql_close(my);  

  75.         return 1;  

  76.     }  

  77.   

  78.     mysql_close(my);  

  79.   

  80.     printf("%s\n Upload to DB ok\n", sql);  

  81.   

  82.     return 0;  

  83. }  

  84.   

  85. int parseLogs(FILE *f, LOGS *log)  

  86. {  

  87.     char buf[512];  

  88.     char *father;  

  89.     int index = 0;  

  90.   

  91.     printf("parsing logs... ");  

  92.     fgets(buf, 512, f);  

  93.     if(strlen(buf) < 10) return 1;  

  94.   

  95.     /** 

  96.         parsing log format, like |KEY1#VALUE1|KEY2#VALUE2 

  97.     */  

  98.     father = strtok(buf, "|#");  

  99.     while(father != NULL)  

  100.     {  

  101.         if(strncmp("MACADDR", strupr(father), strlen(father))==0)  

  102.         {  

  103.             father = strtok(NULL, "|#");  

  104.             if (father != NULL)  

  105.             {  

  106.                 printf("1");  

  107.                 index++;  

  108.                 strcpy(log->mac, father);  

  109.             }  

  110.         }  

  111.   

  112.         if(strncmp("SN", strupr(father), strlen(father))==0)  

  113.         {  

  114.             father = strtok(NULL, "|#");  

  115.             if (father != NULL)  

  116.             {     

  117.                 printf("2");  

  118.                 index++;  

  119.                 strcpy(log->sn, father);  

  120.             }  

  121.         }  

  122.   

  123.         if(strncmp("BIOSD", strupr(father), strlen(father))==0)  

  124.         {  

  125.             father = strtok(NULL, "|#");  

  126.             if (father != NULL)  

  127.             {     

  128.                 printf("3");  

  129.                 index++;  

  130.                 strcpy(log->biosD, father);  

  131.             }  

  132.         }  

  133.   

  134.         if(strncmp("BIOSV", strupr(father), strlen(father))==0)  

  135.         {  

  136.             father = strtok(NULL, "|#");  

  137.             if (father != NULL)  

  138.             {     

  139.                 printf("4");  

  140.                 index++;  

  141.                 strcpy(log->biosV, father);  

  142.             }  

  143.         }  

  144.   

  145.         if(strncmp("EC", strupr(father), strlen(father))==0)  

  146.         {  

  147.             father = strtok(NULL, "|#");  

  148.             if (father != NULL)  

  149.             {     

  150.                 printf("5");  

  151.                 index++;  

  152.                 strcpy(log->ec, father);  

  153.             }  

  154.         }  

  155.   

  156.         if(strncmp("OAKEY", strupr(father), strlen(father))==0)  

  157.         {  

  158.             father = strtok(NULL, "|#");  

  159.             if (father != NULL)  

  160.             {     

  161.                 printf("6");  

  162.                 index++;  

  163.                 strcpy(log->oaKey, father);  

  164.             }  

  165.         }  

  166.   

  167.         if(strncmp("TOUCHFW", strupr(father), strlen(father))==0)  

  168.         {  

  169.             father = strtok(NULL, "|#");  

  170.             if (father != NULL)  

  171.             {     

  172.                 printf("7");  

  173.                 index++;  

  174.                 strcpy(log->touchFW, father);  

  175.             }  

  176.         }  

  177.   

  178.         if(strncmp("BATTERY", strupr(father), strlen(father))==0)  

  179.         {  

  180.             father = strtok(NULL, "|#");  

  181.             if (father != NULL)  

  182.             {     

  183.                 printf("8");  

  184.                 index++;  

  185.                 log->batlvl = atoi(father);  

  186.             }  

  187.         }  

  188.   

  189.         father = strtok(NULL, "|#");  

  190.     }  

  191.   

  192.     printf("\n%s, %s, %s, %s, %s, %s, %s, %d\n", log->sn, log->mac, log->biosV, log->biosD, log->ec, log->touchFW, log->oaKey, log->batlvl);  

  193.   

  194.     printf("index=%d", index);  

  195.     if (index != 8)  

  196.         return 1;  

  197.     else  

  198.         return 0;  

  199. }  

  200.   

  201. int main(int argc, char* argv[])  

  202. {  

  203.     FILE *f;  

  204.     DBINFO dbinfo;  

  205.     LOGS    log;  

  206.     memset(&dbinfo, '\0'sizeof(dbinfo));  

  207.     memset(&log, '\0'sizeof(log));  

  208.   

  209.     if (argc != 5) help();  

  210.   

  211.     if ((f=fopen(argv[4], "r"))==NULL)  

  212.     {  

  213.         fprintf(stderr, "\n] Error open file!\n");  

  214.         return 1;  

  215.     }  

  216.   

  217.     if(parseLogs(f, &log))  

  218.     {  

  219.         fprintf(stderr, "\n] Error log file format!\n");  

  220.         return 1;  

  221.     }  

  222.   

  223.     strncpy(dbinfo.host, argv[1], strlen(argv[1]));  

  224.     strncpy(dbinfo.user, argv[2], strlen(argv[2]));  

  225.     strncpy(dbinfo.passwd, argv[3], strlen(argv[3]));  

  226.     strncpy(dbinfo.db, "test", strlen("test"));  

  227.   

  228.     return uplog(&dbinfo, &log);  

  229.   

  230. }  




院士
2017-12-31 09:44:40     打赏
2楼

实在是太高大上了


专家
2017-12-31 09:59:40     打赏
3楼

谢谢分享源码。


专家
2017-12-31 10:17:52     打赏
4楼

Mark一下,下次用到验证一下


高工
2018-01-01 16:02:17     打赏
5楼

先留下 研究研究



专家
2018-01-02 09:04:16     打赏
6楼

一直当STM32是单片机,没想到也能跑mysql,赞


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]