【发布时间】:2018-09-10 14:16:08
【问题描述】:
我最近决定学习MySQL++,但在入门时遇到了一些麻烦。无论如何,我正在尝试制作一个程序来存储最新版本的程序(以帮助 Homebrew)。
main.cpp:
#include <mysql++/mysql++.h>
#include <stdlib.h>
using namespace std;
using namespace mysqlpp;
int main() {
Connection conn (false);
conn.connect ("db.ssqls", "localhost");
Query query = conn.query();
query << "SELECT * FROM version;";
StoreQueryResult ares = query.store();
for (size_t i = 0; i < ares.num_rows(); i++)
cout << "Name: " << ares[i]["name"] << " - Address: " << ares[i]["address"] << endl;
return (EXIT_SUCCESS);
}
我用g++ -lmysqlpp -g main.cpp -o main -DMYSQLPP_MYSQL_HEADERS_BURIED 编译了这个。然后我使用./main 运行它。
使用sqlite3 在db.ssqls 上运行SELECT * FROM version; 会得到1|cmake|3|11|0|cmake.org|。
当我注意到ares.num_rows()==0 时,我正在调试(使用lldb)。事实上,似乎什么也没发生。
我的代码有什么问题?
【问题讨论】:
-
你已经关闭了异常,所以你应该从
conn.connect返回值。您可能未连接。 -
@user4581301 它返回 0。我之前有异常,没有抛出任何异常。 (我假设
int test = conn.connect("db.ssqls", "localhost");是你的意思,对吧?) -
bool test = conn.connect("db.ssqls", "localhost");会更合适一些,但获得 0 就足够了。 0 为假。这方面的文档是弱的,但我认为 false 意味着没有连接。抱歉,如果我错了。致电 connected进行测试。 -
@user4581301 都返回 0。我将摆弄连接,看看是否可以修复它。此外,我从他们的示例开始(这需要在 2013 年删除其他示例代码),因此我可以完全理解开发人员在库的这一部分所做的努力所带来的挫败感。
-
@user4581301 嗯...这很尴尬。嗯...我可能可能不知道您必须咳咳
mysqld进程运行才能接受连接。