Android检索结果后给出两个参数date和id

时间:2016-09-19 19:55:10

标签: android sqlite date datetime-format

我有两个参数(tenant_id和dateIn)。根据我的查询,我总是得到-1作为结果。我不知道查询语句中的问题在哪里。

请注意,数据库中的日期格式为VkImage

dd/MM/yyyy

2 个答案:

答案 0 :(得分:0)

我认为列名至少存在错误

不是这个:String selection = "TENANT_ID = " + id + " AND " + "DEBT_DATE < " + "date("+ dateIn+")";检查名为TENANT_ID和DEBT_DATE的列,实际上你想检查列&#34; tenant_id&#34;和&#34; debt_date&#34;。

所以我认为应该选择:String selection = TENANT_ID + " = " + id + " AND " + DEBT_DATE + " < " + "date("+ dateIn+")";

我对sqlite中的日期不太熟悉,但如果日期函数在这种情况下不起作用,也许您应该查看strftime function of sqlite

另外,我建议使用where参数。所以基本上不是说TENANT_ID + " = " + id,而是说TENANT_ID + " = ?",并以类似的方式更改DEBT_DATE。然后,您将为查询函数提供一个具有值的数组,这些值随后将按照它们在数组中的顺序在问号的位置中使用。查询更安全,请查看更多详细信息,以便在您感兴趣的情况下使用where {args和完整示例Stackoverflow thread

答案 1 :(得分:0)

最后,在Peter和一些resaerch的反馈下,我找到了解决方案

  public String getTenantDateDebtByIdandDate(long id, String dateIn) {
    String  idout = "";
    String[] columns = {TENANT_ID, DEBT_DATE };
   String selection = TENANT_ID + " = '" + id + "' AND " + DEBT_DATE + " < " + "'"+ dateIn + "'";
    Cursor cursor = mDatabase.query(TABLE_TENANT_DEBT, columns, selection, null, null, null, null);
    while (cursor.moveToNext()) {

        idout = cursor.getString(cursor.getColumnIndex(DEBT_DATE));
    }
    cursor.close();
    return idout;
}