Rau*_*dey 6 android android-sqlite
我想从表格中检索特定的单元格。我想要 alarm_music(TEXT),其中我将警报的小时数(整数)和分钟数(整数)(在 where 子句中)存储在警报表中。
触发查询的代码
mBhelperClass = new AlarmsDBhelperClass(this);
db= mBhelperClass.getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT musicPath FROM alarms WHERE hours="+hour+" AND minutes="+min,null);
Log.d("gaurnagSnooze",""+cursor.getCount());
if (cursor.moveToFirst()) {
songPath = cursor.getString(cursor.getColumnIndex(AlarmsDBhelperClass.MUSIC_PATH));
Log.d("if executed! ","songpath initialized!");
}
cursor.close();
Run Code Online (Sandbox Code Playgroud)
moveToFirst() 返回 FALSE 意味着表中没有行。
但是当我触发SELECT musicPath FROM alarmsmoveToFirst() 时返回TRUE。
这怎么可能?
问题: cursor.moveToFirst() 返回FALSE意味着不存在行。
解决方案:在表中插入行时,我使用了时间选择器中的24 小时时钟格式日历实例并存储在表中。但是,当我尝试使用小时的where子句从数据库中检索值我用12Hour时钟格式日历的实例。这肯定不会产生任何输出,因此没有作为 cursor 和 cursor.moveToFirst() 返回 FLASE 返回的行。
此查询不安全,可能会导致不需要的结果。但是,如果您想使用不安全模式,请更改以下查询
"SELECT musicPath FROM alarms WHERE hours="+hour+" AND minutes="+min
Run Code Online (Sandbox Code Playgroud)
到
"SELECT musicPath FROM alarms WHERE hours= '"+hour+"' AND minutes= '"+min+"'"
Run Code Online (Sandbox Code Playgroud)
添加'周围whereArgs。
虽然这是正确的,但不推荐(不安全)
建议(安全)将其包含?在where clause中query并用 中的值替换它们where args。
Cursor cursor = db.rawQuery("SELECT musicPath FROM alarms WHERE hours = ? AND minutes = ? ",new String[]{hour,min});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
199 次 |
| 最近记录: |