我想从我的表中获取名为“人”的行。我想借助指标来做到这一点,以避免在该人没有名字的情况下发生例外。这该怎么做?

我写了代码:

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/

10-11 02:54