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;med ss您的代码不完整。您没有将该代码放在带有返回类型和参数的函数体中。其次,我们不知道结果
声明为什么。最后,您没有发布任何函数调用。但是,您的问题很可能与使用char*
和在函数体中存储相同的char指针值有关e向量的各个元素。对不起,我刚刚更新了上面的代码。检查你的MYSQL\u行向量。它们的值相同吗?如果相同,那么向量就不起作用。如果是这样,那么你需要获取每次调用MYSQL\u fetch\u行
的信息,并将其复制到你自己的结构中——然后返回一个向量这些结构的tor。