我正在尝试使用MySQL / C ++ Connector通过C ++显示一个小的MySQL表,但是当我执行以下函数时,我的程序要么退出“Aborted”消息,要么我得到段错误。谁能告诉我这里我做错了什么?我以为我很好地遵循了文档。 :/
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
答案 0 :(得分:3)
您似乎以错误的顺序呼叫delete
。 example首先删除res
。
ResultSet
析构函数可以引用关联的Statement
。
通常,您应该按照创建/分配对象的相反顺序执行free
/ delete
。
答案 1 :(得分:0)
问题是我的系统上的库安装不正确;根据文档,您运行make clean
作为中间步骤,它应该只是make
。
感谢来自## c ++ - basic(http://damewood.us/的Vincent Damewood)的vinleod帮助解决这个问题。