【问题标题】:How do I update the field of a table with the count of another table? SQLite, Java, Android如何使用另一个表的计数更新表的字段? SQLite,Java,安卓
【发布时间】:2011-03-30 03:01:15
【问题描述】:

在 UPDATE 之后,我在“'D”下得到一个“无效字符常量”。有任何想法吗? 原文:

公共游标fetchAllJournals(字符串排序){ mDb.rawQuery(更新'DATABASE_JOURNAL_TABLE' 设置'KEY_JOURNAL_NOTES' = (从“DATABASE_HOMES_TABLE”中选择计数(*) WHERE 'DATABASE_JOURNAL_TABLE'.'KEY_JROWID' = 'DATABASE_HOMES_TABLE'.'KEY_HOME_JOURNALID') ) 返回 mDb.query(DATABASE_JOURNAL_TABLE, new String[] {KEY_JROWID, KEY_JOURNAL_TITLE, KEY_JOURNAL_NOTES, KEY_JDATE},null , null, null, null, sort ,null); }

回答:

公共游标fetchAllJournals(字符串排序){ mDb.execSQL("UPDATE "+DATABASE_JOURNAL_TABLE+" SET "+KEY_JOURNAL_NOTES+" " + " = (SELECT COUNT(*) FROM "+DATABASE_HOMES_TABLE+" WHERE " +DATABASE_JOURNAL_TABLE+"."+KEY_JROWID+" = "+DATABASE_HOMES_TABLE +"." + KEY_HOME_JOURNALID+")"); 返回 mDb.query(DATABASE_JOURNAL_TABLE, new String[] {KEY_JROWID, KEY_JOURNAL_TITLE, KEY_JOURNAL_NOTES, KEY_JDATE},null , null, null, null, sort ,null); }

【问题讨论】:

    标签: java android sqlite


    【解决方案1】:

    这种情况下的无效字符常量是“DATABASE_JOURNAL_TABLE”。 Java中的单引号定义了一个字符常量,即一个字符,例如'a' 或 'b' 或 '!'。 'DATABASE_JOURNAL_TABLE' 是其中的一个字符串,因此您必须使用字符串文字和双引号,即 "prefix "+DATABASE_JOURNAL_TABLE+" suffix"。

    试试这个:

    public Cursor fetchAllJournals(String sort) {
    
    mDb.rawQuery("UPDATE "+DATABASE_JOURNAL_TABLE+" SET "+KEY_JOURNAL_NOTES+" = (SELECT COUNT(*) FROM "+DATABASE_HOMES_TABLE+"WHERE "+DATABASE_JOURNAL_TABLE+"."+KEY_JROWID+" =+"DATABASE_HOMES_TABLE"+."+KEY_HOME_JOURNALID+")");
    
    return mDb.query(DATABASE_JOURNAL_TABLE, new String[] {KEY_JROWID, KEY_JOURNAL_TITLE, KEY_JOURNAL_NOTES, KEY_JDATE},null , null, null, null, sort ,null);
    }
    

    【讨论】:

    • 我认为这很接近,我将 rawQuery 更改为 execSQL 和一些格式错误。我现在有一个 SQLite 异常。我已经更新了上面的代码。
    • 您在查询中缺少结束语 )。标记选择查询结束的结束 )。
    • 就是这样。谢谢您的帮助。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    相关资源
    最近更新 更多