代码之家  ›  专栏  ›  技术社区  ›  Cameron

sqlite选择和排序错误

  •  0
  • Cameron  · 技术社区  · 14 年前

    我试图得到一个只返回具有指定名称的行的查询,并按周(整数)降序排序。

    每次我试着运行它,它都会给我一个fc,logcat说

    错误/AndroidRuntime(728):android.database.sqlite.sqliteException:没有这样的列:new:,编译时:选择name、week、total from notes,其中name=new order by weekdesc限制为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设置为空,它表示没有这样的列weekdesc,这也没有意义,因为它只是按整数排序。

    我以前已经让这段代码工作过,但我把它放错地方了,似乎不能让它再次工作…这越来越令人沮丧,任何帮助都非常感谢!

    1 回复  |  直到 14 年前
        1
  •  0
  •   EboMike    14 年前

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

    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”。