如何用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个回答

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

#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);
}

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

我的建议是,jeesite的每个查询,查询的是什么数据库,先搞清楚。
最简单的办法是: 根据他所使用的框架,开启sql日志,然后每执行一个查询,查看sql是啥
第二个办法就是: 在mysql里面看,具体就是 搜索 mysql 查看最近执行的sql mysql实时执行的sql等关键字,
然后jeesite的网页上,执行一个查询,看看它的sql语句是啥。

最后,你的问题的本质,其实是如何快速找到jeesite的业务所执行的真实的sql

weixin_42373421
玉虚宫叶少保 感谢您的建议,其实你说到了一部分的点子上,不过其实比这要复杂一些。。。。不过我已经有头绪了,感谢帮助!
7 个月之前 回复

用nvaicat for mysql之类的工具打开你的数据库,确认是不是jeesite 这个名字,以及里面有没有 大臂 这个表

weixin_42373421
玉虚宫叶少保 回复caozhy: 是这样的,我要在一个C++开发的软件上编一个调用jeesite数据库的接口,理论上直接打开网址就可以了,但是老板觉得太简单了,一定要做成弹出菜单,然后提供搜索库里内容并且能下载搜出来的数据的功能。那么我现在的问题呢,就是:不知道应该怎么调用那些已经传上去的数据——因为用navicat打开那个库,里面的表都是英文的,我也不知道哪些数据存在哪些表里面,不知道您说的方法具体操作是什么呢?
8 个月之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 另外,既然你有网站,也可以通过网站而不是数据库去找,用inet库可以让vc++直接读取网站
8 个月之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复吉曾纬: 它可能在别的表里面,你要看了它服务器的程序才知道,或者你把所有的表都打开看看,找找有没有
8 个月之前 回复
weixin_42373421
玉虚宫叶少保 是的,打开过了,没有这个表。。。所以我想问的是:例如“大臂”这些自己定义并上传的数据所在的表和位置,应该怎么查看并调用呢?
8 个月之前 回复

可以引入后调用相应的字库

weixin_42373421
玉虚宫叶少保 能说得具体一些吗?没明白什么意思啊
7 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!