我希望根据标题和日期获得一行。 我已经创建了一些代码,但我是否正确?代码中的所有空字段是什么?
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);";
感谢您的帮助!
答案 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,可能需要做一些研究,以了解每个子句对查询的作用。