我正在尝试使用 c++ 和 libpqxx 实现搜索功能。但是我遇到了以下问题:用户可以指定 4 种不同的搜索模式(每种模式都是可选的):
- 从日期
- 迄今为止
- 文件类型
- 文件编号
它们中的每一个都是可选的。因此,如果我想使用准备好的语句,我需要 2^4 = 16 个不同的准备好的语句。嗯,这是可能的,但我想避免这种情况。
下面以 libpqxx 中的准备好的语句为例:
_connection->prepare("ExampleStmnt", "SELECT * FROM foo WHERE title=$1 AND id=$2 AND date=$3")
("text", pqxx::prepare::treat_string)
("smallint", pqxx::prepare::treat_direct)
("timestamp", pqxx::prepare::treat_direct);
因此,我也不知道如何将这样一个准备好的陈述拼凑在一起。
还有其他我没有想到的“好”方式吗?