为什么excecSQL在声明中不接受*?

时间:2012-08-01 13:18:19

标签: android sqlite

我正在研究一个Android项目,我必须删除表格中的所有记录:

 public void deleteAll(){
    SQLiteDatabase db=this.getWritableDatabase();
    String req="delete * from "+ TABLE_ENIGME;
    db.execSQL(req);
}

但是当我调用我的函数 deleteAll 时,会发现这个异常:

 android.database.sqlite.SQLiteException: near "*": syntax error: delete * from enigme2

为什么“*”是不合适的?

3 个答案:

答案 0 :(得分:6)

请查看http://www.sqlite.org/lang_delete.html。 删除不接受通配符。 使用

Delete From <table name>

代替

答案 1 :(得分:4)

主要是因为那是无效的sql语法。只是省略了明星并做了

delete from enigme2;

答案 2 :(得分:2)

这是不合适的,因为它不是有效的SQL语法。 *用于表示“所有列”(在选择时)。由于DELETE语句正在删除整行,表明“所有列”没有意义,因为默认情况下它会删除该行的所有列中的值。