execSQL SQLiteException靠近“?”

时间:2010-02-17 05:01:26

标签: android sqlite

为什么这不起作用?

db.execSQL("INSERT INTO PARTIES (PARTY_NAME, PARTY_COUNT) SELECT DISTINCT(PARTY), COUNT(PARTY) FROM ? WHERE (Year=?) GROUP BY PARTY ORDER BY PARTY ASC", new Object[] { "Election", "2004" });

它在rawQuery中完美运行!!

2 个答案:

答案 0 :(得分:2)

我不知道你指的是什么“rawQuery”(请点击URL)。我不知道任何允许参数替换元数据的SQL引擎,例如表和列的名称 - 在参数替换中只允许使用值或名称。 SQLite也不例外。

答案 1 :(得分:1)

可能不应该吗?

来自doc的

public void execSQL (String sql, Object[] bindArgs)

执行一个不是SELECT/INSERT/UPDATE/DELETE.的SQL语句 对于INSERT语句,请改用以下任何一种语句。

  • insert(String, String, ContentValues)
  • insertOrThrow(String, String, ContentValues)
  • insertWithOnConflict(String, String, ContentValues,int)

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html