【发布时间】:2017-09-03 07:33:27
【问题描述】:
我正在开发一个用户输入标题和日期的应用程序。我想防止在同一天将重复的标题输入到数据库中。我正在检查标题是否在所选日期存在。但是我的查询似乎不起作用,我不知道为什么,应用程序崩溃了。这个查询正确吗?有人可以帮忙吗?
public boolean checkExist(String title, String date) {
SQLiteDatabase db = this.getWritableDatabase();
Cursor c = db.rawQuery("SELECT * FROM "+TABLE_NAME+" WHERE "+TITLE+"=?" +"AND" + DATE+"=?", new String[] {title,date});
boolean exists = c.moveToFirst();
c.close();
return exists;
}
【问题讨论】:
-
不行,怎么办?它是失败还是游标没有返回数据(即 checkExist 总是返回 false)?如果失败,则包括日志。如果它返回 do 数据,那么我建议在
boolean exists = c.moveToFirst();处放置一个断点,然后从调试器中查看光标。尤其是生成的查询。 -
应用程序崩溃
-
请包含 logcat。糟糕,很抱歉错过了您所说的崩溃。嗯,猜测它是从 0 行开始的 INDEX 1 行的消息,因为光标没有行并且您正在尝试移动。您应该使用 c.getCount() 检查游标中的行数,如果大于 0,则返回 true,否则返回 false。
-
查询是否正确?
-
boolean exists = cursor.getCount() > 0
标签: android sqlite android-sqlite