1

我有一个列名和年龄的表。

我试图把所有的名字都写成

soci::session& sql_session(conn->Session());
soci::rowset<std::string> rs = sql_session.prepare << select name from Person;
std::vector<std::string> plist;
std::copy(rs.begin(), rs.end(), plist.begin());

但是我的程序在 std::copy 处崩溃。似乎容器(源和目标)对于 std::copy 都不相同。我们可以使用 ORM 做到这一点,如何?

4

1 回答 1

0

如果您只需要读取不使用rowset的字符串,则无需复制:

const size_t namesLimit = 100;
std::vector<std::string> plist(namesLimit);
soci::session sql_session(...); // connection details
sql_session << "select name from Person;", into(plist);

当然,如果您需要在没有硬编码限制的情况下获取所有名称,您可以更早地使用:

size_t namesLimit ;
sql_session << "select count(*) from Person", into(namesLimit);
于 2019-12-01T12:00:00.793 回答