SQLITE通过导致错误来选择和排序

时间:2010-07-30 22:41:38

标签: android sqlite

我正在尝试获取一个只返回指定名称的行的查询,并按周(整数)降序排序。

每次我尝试运行它都会给我一个FC和logcat说

错误/ AndroidRuntime(728):android.database.sqlite.SQLiteException:没有这样的列:新:,编译时:SELECT Name,Week,Total FROM notes WHERE Name = New ORDER BY WeekDESC LIMIT 10

    public Cursor graphQuery(String name){
    return mDb.query(DATABASE_TABLE, new String[] {KEY_NAME,
            KEY_WEEK, KEY_TOTAL}, KEY_NAME + "=" + name, null, null, null, KEY_WEEK + "DESC","10");
}

它说没有这样的列,这没有意义,因为它应该查看行中的名称并返回匹配的列。此外,如果我将KEY_NAME +“=”+ name设置为null,则表示没有这样的列WeekDESC也没有意义,因为它只是应该按整数排序。

我之前已经使用了这段代码,但是我放错了地方,似乎无法让它再次运行......这令人沮丧,任何帮助都非常感谢!

1 个答案:

答案 0 :(得分:0)

如果按字符串搜索,则应使用问号作为占位符,即

return mDb.query(DATABASE_TABLE, new String[] {KEY_NAME,
            KEY_WEEK, KEY_TOTAL}, KEY_NAME + "=?", new String[] { name }, null, null, null, KEY_WEEK + "DESC","10");

否则,如果名称包含空格或特殊字符,它将会中断。 (如果你真的不想要问号,你需要将字符串放在引号或双引号中,但使用问号会更加优雅和安全。)

另外:“DESC”和您要排序的密钥之间没有空格。使用“DESC”。