我有两个参数(tenant_id和dateIn)。根据我的查询,我总是得到-1作为结果。我不知道查询语句中的问题在哪里。
请注意,数据库中的日期格式为VkImage
dd/MM/yyyy
答案 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;
}