Sqlite_orm“and”运算符操作数不匹配

Sqlite_orm "and" operator operands doesn't match

提问人:Iulian Vlascu 提问时间:11/15/2023 最后编辑:Iulian Vlascu 更新时间:11/15/2023 访问量:26

问:

我正在构建一个数据库存储库类,其中包含用户与sqlite_orm数据库交互所需的每种方法。在根据提供的用户名和密码检查用户是否存在的方法中,我无法从“and”运算符传递此错误:

严重性代码说明 项目文件行抑制状态 错误 C2678 二进制文件“&&”:未找到采用类型为“sqlite_orm::internal::where_t<sqlite_orm::internal::internal::is_equal_t<std::string UserDB::* ,std::string>>”的左操作数(或没有可接受的转换)

这是方法:

int8_t DatabaseRepository::CheckUserExists(const std::string& inputUsername, const std::string& inputPassword)
{
    auto result = m_db.select(sql::columns(&UserDB::id),
        sql::where(sql::c(&UserDB::username) == inputUsername) and sql::c(&UserDB::password) == inputPassword);

    if (!result.empty())
        return result.front();
    else
        return -1;
}

我已经检查了sqlite_orm pdf文档,并且我已经按照pdf中的原样编写了方法,甚至Chat gpt也无法解决这个问题。

SQLite C++11 ORM

评论

0赞 Igor Tandetnik 11/15/2023
你有 你可能是说.仔细检查括号。sql::where(A==B) and C==Dsql::where(A==B and C==D)
0赞 Iulian Vlascu 11/15/2023
@IgorTandetnik我已经尝试过了,我已经尝试了那行代码上的括号组合,但它仍然不起作用。
0赞 Igor Tandetnik 11/15/2023
它仍然会产生您引用的错误吗?我希望它不会。如果仍有困难,请提出新问题,并解释“不工作”的新症状。
0赞 Iulian Vlascu 11/16/2023
@IgorTandetnik是的,它仍然产生相同的错误,我正在考虑重新安装 VS 或 sqlite_orm 库。
0赞 Igor Tandetnik 11/16/2023
显示您声称仍会产生错误的修改后的代码。你一定做错了。更正后的代码不应将子句作为运算符的操作数;操作员将处于条件内。where&&

答: 暂无答案