Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 包含MYSQL_行的向量,将信息传递给另一个向量导致问题_C++_Mysql_Vector - Fatal编程技术网

C++ 包含MYSQL_行的向量,将信息传递给另一个向量导致问题

C++ 包含MYSQL_行的向量,将信息传递给另一个向量导致问题,c++,mysql,vector,C++,Mysql,Vector,我正在使用一个方法返回一个向量。但这样做似乎让我失去了一点信息 生成向量的代码如下所示: //The printf function, after the while loop is finished, displays the following: // // 1 ~/Test/ Folder 0 // 2 ~/Test/ Folder 0 // 4 ~/HelloFromC++ Message 10 // 5 ~/HellowFromC++ Message 10 std::vector&l

我正在使用一个方法返回一个向量。但这样做似乎让我失去了一点信息

生成向量的代码如下所示:

//The printf function, after the while loop is finished, displays the following:
//
// 1 ~/Test/ Folder 0
// 2 ~/Test/ Folder 0
// 4 ~/HelloFromC++ Message 10
// 5 ~/HellowFromC++ Message 10

std::vector<MYSQL_ROW> Database::Query(const char* query, bool hasreturn)
{
MYSQL *connection;
MYSQL_RES *resource;
MYSQL_ROW result;
connection = mysql_init(NULL);

if(!mysql_real_connect(connection, servername, user,
                password, database, 0, socket, 0)) {
                    printf("%s\n", mysql_error(connection));
                }

mysql_query(connection, query);

resource = mysql_use_result(connection);

std::vector<MYSQL_ROW> results (mysql_num_rows(resource));

if(hasreturn)
{
    while((result = mysql_fetch_row(resource))) {
        printf("%s %s %s %s \n",result[0],result[1],result[2],result[3]);
        results.push_back(result);
    }
}

mysql_close(connection);

return results;
}
std::vector<MYSQL_ROW> dsMedia = database.Query((char*)("CALL `.Media_Get_List`()"),true);
std::vector<Media> MediaList;

//Convert to media
for(int med = 0; med < dsMedia.size(); med++)
{
    MYSQL_ROW row = dsMedia[med];

    stringstream ss;
    ss << row[0] << row[1] << row[2] << row[3];
    string test = ss.str();

    printf("%s %s %s %s \n",row[0],row[1],row[2],row[3]);
}

//The printf function, after the while loop is finished, displays the following:
//
// * Message 10
// * Message 10
// * Message 10
// * Message 10
//while循环完成后,printf函数显示以下内容:
//
//1~/Test/文件夹0
//2~/Test/文件夹0
//4~/HelloFromC++消息10
//5~/HellowFromC++消息10
std::vector Database::Query(const char*Query,bool hasrurn)
{
MYSQL*连接;
MYSQL_RES*资源;
行结果;
connection=mysql_init(NULL);
如果(!mysql\u real\u connect(连接、服务器名、用户、,
密码,数据库,0,套接字,0)){
printf(“%s\n”,mysql_错误(连接));
}
mysql_查询(连接、查询);
资源=mysql\u使用\u结果(连接);
向量结果(mysql_num_行(资源));
如果(返回)
{
while((result=mysql\u fetch\u row(resource))){
printf(“%s%s%s%s\n”,结果[0],结果[1],结果[2],结果[3]);
结果。推回(结果);
}
}
mysql_关闭(连接);
返回结果;
}
接收并显示矢量的代码如下所示:

//The printf function, after the while loop is finished, displays the following:
//
// 1 ~/Test/ Folder 0
// 2 ~/Test/ Folder 0
// 4 ~/HelloFromC++ Message 10
// 5 ~/HellowFromC++ Message 10

std::vector<MYSQL_ROW> Database::Query(const char* query, bool hasreturn)
{
MYSQL *connection;
MYSQL_RES *resource;
MYSQL_ROW result;
connection = mysql_init(NULL);

if(!mysql_real_connect(connection, servername, user,
                password, database, 0, socket, 0)) {
                    printf("%s\n", mysql_error(connection));
                }

mysql_query(connection, query);

resource = mysql_use_result(connection);

std::vector<MYSQL_ROW> results (mysql_num_rows(resource));

if(hasreturn)
{
    while((result = mysql_fetch_row(resource))) {
        printf("%s %s %s %s \n",result[0],result[1],result[2],result[3]);
        results.push_back(result);
    }
}

mysql_close(connection);

return results;
}
std::vector<MYSQL_ROW> dsMedia = database.Query((char*)("CALL `.Media_Get_List`()"),true);
std::vector<Media> MediaList;

//Convert to media
for(int med = 0; med < dsMedia.size(); med++)
{
    MYSQL_ROW row = dsMedia[med];

    stringstream ss;
    ss << row[0] << row[1] << row[2] << row[3];
    string test = ss.str();

    printf("%s %s %s %s \n",row[0],row[1],row[2],row[3]);
}

//The printf function, after the while loop is finished, displays the following:
//
// * Message 10
// * Message 10
// * Message 10
// * Message 10
std::vector dsMedia=database.Query((char*)(“调用`.Media\u Get\u List`()”),true);
向量媒体列表;
//转换为媒体
对于(int-med=0;medss您的代码不完整。您没有将该代码放在带有返回类型和参数的函数体中。其次,我们不知道
结果
声明为什么。最后,您没有发布任何函数调用。但是,您的问题很可能与使用
char*
和在函数体中存储相同的char指针值有关e向量的各个元素。对不起,我刚刚更新了上面的代码。检查你的MYSQL\u行向量。它们的值相同吗?如果相同,那么向量就不起作用。如果是这样,那么你需要获取每次调用
MYSQL\u fetch\u行
的信息,并将其复制到你自己的结构中——然后返回一个向量这些结构的tor。