包含MYSQL_ROW的向量,将信息传递给另一个导致问题的向量

时间:2014-09-18 08:37:49

标签: 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<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

非常感谢任何帮助。 :)

0 个答案:

没有答案