我试图通过C++使用MySQL/C++连接器显示一个小的MySQL表,但是当我执行以下函数时,我的程序要么退出消息“Aborted”获得段错误。任何人都可以告诉我我在这里做错了什么?我认为我很好地跟踪了文档。 :/SEGFAULT使用MySQL/C++连接器获得结果
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") << std::endl
<< "Comments: " << res->getString("comments")
<< std::endl << std::endl;
}
}
delete stmt;
delete res;
}
完整的(尚未完成的)程序可以在这里找到,仅供参考。 http://pastebin.com/kWnknHi4
此外,被调用的表中的每个字段都包含有效的字符串。
编辑调试信息可以在这里找到:http://pastebin.com/NnSqV8hv
你的调试器说什么?它会告诉你什么行号? – bmargulies 2011-01-08 02:52:40
这不是一个调试器。这是glibc;具体来说,它检测到你的程序正在传递一个无效指针给`free'。即使你不直接调用`free`,你正在使用的库是。 GNU调试器是`gdb`。有多种包装`gdb`的程序,包括Emacs,Eclipse和NetBeans。 – 2011-01-08 06:39:29