玉虚宫叶少保 2019-03-03 11:03 采纳率: 25%
浏览 386
已采纳

如何用C++调用jeesite的库中的内容

如题,我想用C++来调用jeesite的库中的内容。
现在的问题是,项目之前用的jeesite的web库是基于mysql的,而我已经能够使用C++连接mysql库,但是对于如何调用库中的内容却不知道该怎么做。。。
因为不清楚之前上传到jeesite里的内容,是否就存储在名为jeesite的那个mysql库里?好像C++调用那个库的时候显示没法查询库中的内容?

这是jeesite的web库的已上传的资源搜索的截图

而C++调用mysql库的代码如下:

#include "stdafx.h"
#include <iostream>  
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  

//下面两个头文件的顺序不能颠倒  
#include "winsock2.h"  
#include "windows.h"  
#include "mysql.h"   

using namespace std;  

void main()
{
 MYSQL *pConn;
 pConn = mysql_init(NULL);
 //第2、3、4、5参数的意思分别是:服务器地址、用户名、密码、数据库名,第6个为mysql端口号(0为默认值3306)
 if(!mysql_real_connect(pConn,"localhost","root","wtk123","jeesite",3306,NULL,0))
 {  
  printf("无法连接数据库:%s",mysql_error(pConn));
  return;
 }
 mysql_query(pConn,"set names gbk");//防止乱码。设置和数据库的编码一致就不会乱码
 //SET NAMES x 相当于 SET character_set_client = x;SET character_set_results = x;SET character_set_connection = x;
 //写set character set gbk;查询不会乱码,但是参数化插入会报错。而set names gbk则都不会乱码

 //mysql_real_query比mysql_query多了个参数: 字符串query的长度, 所以适合有二进制数据的query, 而mysql_query的字符串query不能包含二进制,因为它以\0为结尾
 //mysql_query() 不能传二进制BLOB字段,因为二进制信息中的\0会被误判为语句结束。 mysql_real_query() 则可以。
 if(mysql_query(pConn,"select * from 大臂"))
 {
  printf("查询失败:%s",mysql_error(pConn));
  return;
 }
 //mysql_store_result是把查询结果一次性取到客户端的离线数据集,当结果比较大时耗内存。
 //mysql_use_result则是查询结果放在服务器上,客户端通过指针逐行读取,节省客户端内存。但是一个MYSQL*连接同时只能有一个未关闭的mysql_use_result查询
 MYSQL_RES *result = mysql_store_result(pConn);
 MYSQL_ROW row;
 while(row = mysql_fetch_row(result))
 {
  printf("%s %s\n",row[1],row[2]);
 }
 mysql_free_result(result);
 mysql_close(pConn);
}

调试后的结果如下:
图片说明

可见同样是搜索一样的名字,C++却显示是空的?!

求问应该怎么做呢?如何才能在C++搜索并调用jeesite的库中想要的内容乃至于进一步地下载资源?

注:jeesite的web库中提供了可下载的途径,现在我的问题是,如何在C++端编代码实现在C++端能够搜索、调用、下载所需的库中的资源呢?

jeesite库中的资源具体情况如下图所示,可以看到,在网页端是可以下载的
图片说明

  • 写回答

4条回答 默认 最新

  • 玉虚宫叶少保 2019-03-06 21:23
    关注

    我自己做出来了,填一下坑吧~~
    代码如下:

    #include "stdafx.h"
    #include <iostream>  
    #include <stdio.h>  
    #include <stdlib.h>  
    #include <string.h>  
    
    //下面两个头文件的顺序不能颠倒  
    #include "winsock2.h"  
    #include "windows.h"  
    #include "mysql.h"   
    
    using namespace std;  
    
    MYSQL *pConn;
    MYSQL_RES *res;
    MYSQL_ROW row;
    
    char select_head[50] = "select * from ";
    char desc_head[50] = "desc ";
    char insert_head[200] = "insert into ";
    char drop_msg_head[50] = "delete from ";
    char change_base_head[50] = "use ";
    
    void choose_wyw()
    {
        int t;
        char choose_query[200]={0};
        char table_name[20]={0};
        char choose_name[20]={0};
    
        strcpy(choose_query,select_head);
    
        puts("please enter the table:");
        scanf("%s",table_name);
    
        puts("please enter choose name:");
        scanf("%s",choose_name);
    
        strcat(choose_query,table_name);
        strcat(choose_query," where name like '%");
        strcat(choose_query,choose_name);
        strcat(choose_query,"%'");
        strcat(choose_query,"");
        printf("%s\n",choose_query);
    
        t = mysql_query(pConn,choose_query);
    
    
        res = mysql_store_result(pConn);
    
        while(row = mysql_fetch_row(res))
     {
      printf("%s %s\n",row[1],row[2]);
     }
    
    }
    
    void main()
    {
    
     pConn = mysql_init(NULL);
     //第2、3、4、5参数的意思分别是:服务器地址、用户名、密码、数据库名,第6个为mysql端口号(0为默认值3306)
    
    
     if(!mysql_real_connect(pConn,"localhost","root","wtk123","jeesite",3306,NULL,0))
     {  
      printf("无法连接数据库:%s",mysql_error(pConn));
      return;
     }
     mysql_query(pConn,"set names gbk");//防止乱码。设置和数据库的编码一致就不会乱码
     //SET NAMES x 相当于 SET character_set_client = x;SET character_set_results = x;SET character_set_connection = x;
     //写set character set gbk;查询不会乱码,但是参数化插入会报错。而set names gbk则都不会乱码
    
     //mysql_real_query比mysql_query多了个参数: 字符串query的长度, 所以适合有二进制数据的query, 而mysql_query的字符串query不能包含二进制,因为它以\0为结尾
     //mysql_query() 不能传二进制BLOB字段,因为二进制信息中的\0会被误判为语句结束。 mysql_real_query() 则可以。
    
    
    
    
    
     //mysql_store_result是把查询结果一次性取到客户端的离线数据集,当结果比较大时耗内存。
     //mysql_use_result则是查询结果放在服务器上,客户端通过指针逐行读取,节省客户端内存。但是一个MYSQL*连接同时只能有一个未关闭的mysql_use_result查询
    
    
     choose_wyw();
    
    
     mysql_free_result(res);
     mysql_close(pConn);
    }
    

    调试结果如下图:
    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 无源定位系统的时差估计误差标准差
  • ¥15 请问这个代码哪里有问题啊
  • ¥20 python--version在命令端输入结果Python is not defined怎么办?还有pip不是exe格式是不是没安装成功?
  • ¥15 通过GaussianView进行结构微调消除虚频
  • ¥15 调用transformers库
  • ¥15 由于导出的数据名字中带有/,导致Matlab打不开,怎么办?
  • ¥15 新硬盘安装的程序总是崩溃,提示遇到错误
  • ¥15 openpcdet自制数据集评估bev精度和3d精度相同
  • ¥15 excel 上下按钮 显示行
  • ¥20 云卓h12pro 数传问题