Android SQLite - 命名参数

Iva*_*vak 8 sqlite android

我正在开发使用SQLite作为本地存储的Android应用程序.我需要在sql查询中使用参数,但我找到的所有示例都包含unamed参数,如下所示:

INSERT INTO SomeTable(ColA, ColB, ColC) VALUES (?,?,?);
Run Code Online (Sandbox Code Playgroud)

我想知道 - Android上的SQLite是否支持命名参数?像这样的东西而不是问号..

INSERT INTO SomeTable(ColA, ColB, ColC) VALUES (@paramA, @paramB, @paramC);
Run Code Online (Sandbox Code Playgroud)

SQLite本身支持这一点(根据文档https://www.sqlite.org/lang_expr.html).

提前致谢

CL.*_*CL. 7

Android数据库API仅允许通过索引进行参数绑定.

这不会阻止您在SQL中使用命名参数,但仍然必须使用正确的索引来绑定它们.除文档或重用参数外,这几乎没用:

db.rawQuery("SELECT * FROM Tab WHERE A = @search OR B = @search",
            new String[]{ search });
Run Code Online (Sandbox Code Playgroud)

  • 坦率地说,我有点惊讶,因为即使SQLite文档也不鼓励使用索引绑定参数.无论如何,谢谢你的回答. (2认同)
  • Android数据库API包含许多奇怪的怪癖.(最糟糕的是除了*`execSQL`之外的所有函数*仅支持`String`参数). (2认同)