在我的DBHelper的getEvents方法中有这行代码.
int year, month, day;
String[] columns = new String[] { KEY_EVENTNAME, KEY_DESCRIPTION,
KEY_HOUR, KEY_MINUTE, KEY_DAY, KEY_MONTH, KEY_YEAR,
KEY_REMINDER };
Cursor c = database.query(DATABASE_TABLE, columns,
KEY_YEAR + "=?"+ " AND " + KEY_MONTH + "=?" + " AND "+ KEY_DAY + "=?",
new String[] {String.valueOf(year), String.valueOf(month), String.valueOf(day)},
null, null, KEY_MONTH + " AND "
+ KEY_DAY);
Run Code Online (Sandbox Code Playgroud)
它总是什么都不返回.当我删除以下内容时
int year, month, day;
String[] columns = new String[] { KEY_EVENTNAME, KEY_DESCRIPTION,
KEY_HOUR, KEY_MINUTE, KEY_DAY, KEY_MONTH, KEY_YEAR,
KEY_REMINDER };
Cursor c = database.query(DATABASE_TABLE, columns,
KEY_YEAR + "=?",
new String[] {String.valueOf(year)},
null, null, KEY_MONTH + " AND "
+ KEY_DAY);
Run Code Online (Sandbox Code Playgroud)
它运行正常.我的代码有什么问题?它似乎不接受多个值作为where子句.谁能帮我这个?谢谢.
CL.*_*CL. 14
答案在标题中:您试图将整数值传递给查询,但实际上您最终得到的是字符串值.
这是Android数据库API中一个可怕的设计错误; 您只能将参数用于字符串.
整数不具有字符串值可能具有的格式和SQL注入问题,因此您只需将数字直接插入SQL表达式:
Cursor c = database.query(
DATABASE_TABLE, columns,
KEY_YEAR + "=" + year + " AND " +
KEY_MONTH + "=" + month + " AND " +
KEY_DAY + "=" + day,
null, null, null,
KEY_MONTH + "," + KEY_DAY);
Run Code Online (Sandbox Code Playgroud)
(而且orderBy语法错了.)
| 归档时间: |
|
| 查看次数: |
6764 次 |
| 最近记录: |