gpt4 book ai didi

c++ - 通过准备好的语句实现搜索功能的最佳实践

转载 作者:行者123 更新时间:2023-11-30 04:38:34 24 4
gpt4 key购买 nike

我正在尝试使用 C++ 和 libpqxx 实现搜索功能。但我遇到了以下问题:用户可以指定 4 种不同的搜索模式(每一种都是可选的):

  1. 从日期
  2. 截止日期
  3. 文件类型
  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);

因此我也不知道如何将这样一个准备好的语句拼凑在一起。

还有其他我没有想到的“好”方式吗?

最佳答案

你能做的最好的事情是有四个不同的 ->prepare 子句,这取决于实际使用了多少搜索条件,将条件连接到你的字符串中,然后分支到四个中的一个准备 代码块。 (这可能会吓坏你的样式检查器,让你认为你正在创建一个注入(inject)漏洞,但当然你不是,只要你只插入闭集 os 列名称的元素。)

请注意,这不是一个很好的解决方案,但即使是 Stephane Faroult(在 SQL 的艺术 中)也说这是最好的解决方案,那么我有什么资格争论呢?

关于c++ - 通过准备好的语句实现搜索功能的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3083649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com