【发布时间】:2011-03-01 18:44:20
【问题描述】:
我在使用带有几个表的 SQLite 和参数化查询时遇到了一些问题。我注意到一些使用 SELECT * FROM Table WHERE row=? 的查询在应该返回更多行时返回 1 行。如果我将参数化查询更改为SELECT * FROM Table WHERE row='row',则返回正确的行数。
有谁知道为什么sqlite3_step 在使用参数化查询与以传统非参数化方式使用相同查询时只返回 1 行?
我在 SQLite3 周围使用了一个非常薄的 C++ 包装器。我怀疑包装器可能有问题,但这个问题只存在于几个表上。这让我想知道这些表的设置方式是否有问题。任何建议表示赞赏。
编辑: 这是显示问题的最简单表的架构: CREATE TABLE RefNums (Key TEXT PRIMARY KEY, TripNumber TEXT, RefDesc TEXT, RefNum TEXT);
我正在使用查询:
SELECT * FROM RefNums WHERE TripNumber=?并使用 sqlite3_bind_text。这将在第一次调用 sqlite3_step 时返回 SQLITE_ROW,并在第二次调用 sqlite3_step 时返回 SQLITE_DONE。应该有 2 行。我已经使用 SQLDataBrowser 验证了这些行是否存在。 如果我将查询更改为 SELECT * FROM RefNumbers WHERE TripNumber='012345';然后它按预期工作。
【问题讨论】:
-
表上的架构是什么样的?
-
贴一些说明问题的代码。
-
您怀疑这是包装器的问题是有根据的。