假设我有一个用于查找项目的搜索屏幕。屏幕上有各种可选的搜索选项,它们会导致 SQL 查询语句发生变化。
以下是一些示例搜索:
- 描述搜索
- 描述搜索 + 项目供应商 ID
- 描述搜索 + 项目供应商 ID + 项目层次结构级别 1 id
- 描述搜索 + 项目供应商 ID + 项目层次结构级别 1 id + 级别 2 id
- 项目层次结构级别 1 id + 级别 2 id(无描述,无项目供应商 ID)
...你明白了。有很多可能的组合。我希望使用参数化查询来获得性能优势等(另外我将它们用于整个程序的其余查询)。
有没有办法做到这一点,或者我是否被迫创建每个可能的查询和匹配的 SQLiteCommand 对象,或者根据所选选项使用 StringBuilder 动态构建查询字符串?
我正在使用带有 C# 3.0 的 SQLite.NET 数据提供程序(在 3.5 紧凑框架上)。
更新
基于参数和 using 的默认值为 null 的一些建议(@param isnull or column = @param)
,我想我应该能够让它工作。我会及时向大家发布。
注意:我避免使用存储过程,因为其余代码使用参数化查询而不是存储过程。为了将来维护程序员的理智,我想保持一切一致。无论如何,它不应该有太大的不同。
更新 2
这在桌面系统上效果很好(这是我对查询进行初始测试的地方)。但是,在我使用的 Windows CE 设备上它非常慢。慢得无法使用。尽管如此,我绝对可以在将来使用它,它非常方便。只是在移动设备上运行查询时不会。
谢谢