2012-08-10 100 views
2

这条线,mDatabase.execSQL(sql);,使我有以下错误:SQLite的删除语法错误

{ sqlite returned: error code = 1, msg = near "*": syntax error } 
    for Delete * from table_name Query 

我的SQL查询:DELETE * FROM table_name

我该如何解决这个问题?

+0

ü可以把你的日志猫在这里.. – Sumant 2012-08-10 11:15:21

+0

我无法现在附加日志猫,但我需要告诉你一件事,那就是声明mDatabase.execSQL(sql);对于如下查询正常工作:DELETE FROM table_name WHERE key = 2。但是对于这个DELETE * FROM table_name只有这个不起作用。我正在使用sql密码库(jar)进行数据库操作。提前致谢。 – Vishnu 2012-08-10 12:00:33

回答

5

DELETE * FROM table_name是一个错误的sql命令。使用DELETE from table_name

+0

出于一个简单的原因,您只能删除该行,而不是一组*表示的某一列。 – andig 2012-08-10 11:26:23

+0

我需要删除完整的表,根据您的查询,我们可以只删除一行,我们需要使用WHERE子句和一些主键值。 – Vishnu 2012-08-10 11:55:53

+0

使用此查询没有地方,你删除表中的所有行 – 2012-08-10 12:05:38

0

语法错误意味着您的语句基本拼写错误,无法解析。在这种情况下,错误消息指出发生这种错误的位置 - 在“*”字符上。在这种情况下,您应该访问数据库文档并检查您尝试使用的命令的正确语法。在SQLite的情况下,它是here。你可以在那里找到关于DELETE语句的文档,here是链接。它以图形方式向您显示语法(称为syntax diagrams或铁路图),应该很容易遵循。 在这种情况下,如前所述,您不能在DELETE和FROM之间指定“*”。这是因为您总是删除整行,并且无法删除单个选定的列。

+0

谢谢,我明白了,但现在我正在使用sql密码库(jar)进行数据库操作。有没有什么办法可以找到这个sqlcipher.jar将支持这种类型的查询。 – Vishnu 2012-08-10 12:09:21

+0

如果我正确理解这一点,sqlchipher不应该以任何方式影响sql查询,它应该支持与正常SQLite相同的查询(和相同的语法)。 – 2012-08-10 12:17:30

+0

好吧,感谢您的回复,那么为什么我只为这个查询得到这个错误的特殊性。对于DELETE FROM table_name WHERE key = 3,它工作正常,它只给出DELETE * FROM的错误。我使用相同的mDatabase.exceSQL(sql)相同的语句来执行所有查询。任何其他方式来解决这个问题。 – Vishnu 2012-08-10 12:47:11

0

如果您需要删除整个表,你可以使用然后DROP TABLE如果不存在重新创建表

+0

谢谢。根据Krzysztof Adamski的话我解决了这个问题。非常感谢您宝贵的时间。 – Vishnu 2012-09-10 12:50:25