我正在开发使用SQLite作为本地存储的Android应用程序。我需要在sql查询中使用参数,但我找到的所有示例都包含unamed参数,如下所示:
INSERT INTO SomeTable(ColA, ColB, ColC) VALUES (?,?,?);
我想知道 - Android上的SQLite是否支持命名参数?像这样的东西而不是问号..
INSERT INTO SomeTable(ColA, ColB, ColC) VALUES (@paramA, @paramB, @paramC);
SQLite本身支持此功能(根据文档https://www.sqlite.org/lang_expr.html)。
提前致谢
答案 0 :(得分:6)
Android数据库API仅允许通过索引进行参数绑定。
这不会阻止您在SQL中使用命名参数,但仍然必须使用正确的索引来绑定它们。 除文档或重用参数外,这几乎没用:
db.rawQuery("SELECT * FROM Tab WHERE A = @search OR B = @search",
new String[]{ search });
答案 1 :(得分:1)
更具有android的SQLite特定方法是使用ContentValues进行sql插入。在下面的例子中。 values是ContentValues,它包含列名和列的值。不在ContentValues中的列在插入时设置为其默认值。
id = sqlDB.insertOrThrow(RidesDatabaseHandler.TABLE_RIDES,
null, values);