我正在使用一种方法来返回一个向量。但似乎在这样做时,我失去了一些信息。
生成向量的代码如下:
//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
非常感谢任何帮助。 :)