根据标题和日期获取SQLite行

时间:2014-03-16 22:43:37

标签: android sqlite

我希望根据标题和日期获得一行。 我已经创建了一些代码,但我是否正确?代码中的所有空字段是什么?

public Cursor getRecordFromMondayByTitleDate(String inpRowTitle, String inpRowDate) throws SQLException 
{
    Cursor mCursor =
            db.query(DATABASE_TABLE_MONDAY, new String[] {KEY_M_ROWID, KEY_M_TITLE, KEY_M_DATE,
                    KEY_M_WEIGHT, KEY_M_SET_A, KEY_M_SET_B, 
                    KEY_M_SET_C, KEY_M_SET_D}, 
                    KEY_M_TITLE + "= '" + inpRowTitle + "'", 
                    null,
                    KEY_M_DATE + "= '" + inpRowDate + "'", 
                     null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}

我的数据库表DATABASE_TABLE_MONDAY布局如下:

private static final String DATABASE_CREATE_TABLE_MONDAY =
    "create table if not exists " + DATABASE_TABLE_MONDAY + " (m_id integer primary key autoincrement, "
    + "m_title VARCHAR not null, m_date date, m_weight DOUBLE, m_set_a INT, m_set_b INT, m_set_c INT, m_set_d INT);";

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

我相信您的查询应该更像这样:

db.query(DATABASE_TABLE_MONDAY, 
    new String[] {KEY_M_ROWID, KEY_M_TITLE, KEY_M_DATE, KEY_M_WEIGHT, KEY_M_SET_A, KEY_M_SET_B, KEY_M_SET_C, KEY_M_SET_D},
    KEY_M_TITLE + "='" + inpRowTitle + "' AND " + KEY_M_DATE + "='" + inpRowDate + "'",
    null,
    null, 
    null,
    null);

您的参数是正确的。第三个参数 selection 参数本质上是来自SQL的WHERE子句,因此您需要在此处指定标题和日期。第四个参数是 selectionArgs ,是" help"编码选择。如果指定带有问号的选择,则问题标记将按顺序替换为您提供的数组中的值。不需要使用 selectionArgs ,如果选择已完整写入,则可以传递null。之后,参数指定您希望查询返回给您的方式,并且所有参数都可以传递null值。第五个是 groupBy ,对应于SQL子句GROUP BY。第六个对应于HAVING,第七个对应于ORDER BY。最后一个参数是 limit ,只是限制查询返回的记录数。如果您不需要限制查询,则可以省略此参数,因为有query()方法没有限制。如果您不熟悉SQL,可能需要做一些研究,以了解每个子句对查询的作用。