我想从我的表中获取名为“人”的行。我想借助指标来做到这一点,以避免在该人没有名字的情况下发生例外。这该怎么做?
我写了代码:
try
{
soci::statement st = (sql.prepare << "SELECT firstname FROM person;", soci::into(r, ind));
st.execute();
while (st.fetch())
{
if(sql.got_data())
{
switch(ind)
{
case soci::i_ok:
std::cout << r.get<std::string>(0) << "\n";
break;
case soci::i_null:
std::cout << "Person has no firstname!\n";
break;
}
}else
{
std::cout << "There's no such person!\n";
}
}
}
但是,仅当我添加一行时,它不显示任何行:
std::cout << r.get<std::string>(0) << "\n";
在我的if语句之前,只有这样我才能从数据库中看到名字。
最佳答案
我认为您无需为此目的使用soci::row
,而应使用std::string
//...
std::string firstname;
soci::statement st = (sql.prepare << "SELECT firstname FROM person;"
, soci::into(firstname, ind));
//...
case soci::i_ok:
std::cout << firstname << std::endl;
break;
//...
关于c++ - 使用带有soci::indicators的SOCI从表中获取行[C++],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14424043/