Android SQLite - 命名参数

时间:2014-12-01 17:08:17

标签: android sqlite

我正在开发使用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)。

提前致谢

2 个答案:

答案 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);