开发者

SEGFAULT Getting Results Using MySQL/C++ Connector

I'm trying to display a small MySQL table via C++ using the MySQL/C++ Connector, but when I execute the following function, my program either quits with the message "Aborted" or I get a segfault. Can anyone tell me what I'm doing wrong here? I thought I followed the documentation pretty well. :/

void
addressBook::display(sql::Connection* con)
{
    sql::Statement *stmt;
    sql::ResultSet *res;

    // Create the statement object
    stmt = con->createStatement();

    // Execute a query and store the result in res
    res = stmt->executeQuery("SELECT * FROM address_book "
                 "ORDER BY last_name, first_name");

    // Loop through the results and display them
    if(res)
    {
        while(res->next())
        {
            std::cout << "Name: " << res->getString("first_name")
                  << " "    << res->getString("last_name") << std::endl
                  << "Phone: " << res->getString("phone") << std::endl
                  << "eMail: " << res->getString("email") << std::endl
                  << "City: " << res->getString("city"开发者_如何学JAVA) << std::endl
                  << "Comments: " << res->getString("comments")
                  << std::endl << std::endl;
        }
    }
    delete stmt;
    delete res;
}

The full (as of yet, unfinished) program may be found here, for reference. http://pastebin.com/kWnknHi4

Also, each field in the table being called contains a valid string.

Edit The debugger message can be found here: http://pastebin.com/NnSqV8hv


It looks like you're calling delete in the wrong order. The example deletes res first.

The ResultSet destructor may reference the associated Statement.

Generally, you should do free/delete in the opposite order you created/allocated the object.


The problem was that the libraries were installed incorrectly on my system; according to the docs, you run make clean as an intermediary step, when it should just be make.

Thanks to vinleod from ##c++-basic (Vincent Damewood of http://damewood.us/) for the help in figuring that out.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜