我正在尝试从新删除的SQLite数据库表行中读取数据。
基本上我的程序会在加载某个活动时删除一行,我想检查行内的值。
这是我的get
代码:
public String getSlot() {
String slots = new String();
Cursor cursor = database.query(ChosenSlotDatabaseHandler.TABLE_CHOSEN_PARKING_SLOT,
chosenSlotColumn, null, null, null, null, null);
if( cursor.moveToFirst() ) {
slots = cursor.getString(0);
}
// make sure to close the cursor
cursor.close();
return slots;
}
我已使用这些代码删除了值:
public static final String DELETE_SLOT = "DELETE FROM "
+ TABLE_CHOSEN_PARKING_SLOT + " WHERE "
+ "_ID = " + CHOSEN_ID + ";";
public void deleteSlotSQL()
{
database.execSQL(ChosenSlotDatabaseHandler.DELETE_SLOT);
}
这是设置TextView
值的条件:
if(slots == null)
{
chosenSlotView.setText("You have not parked");
}
else
{
chosenSlotView.setText("You are parked in : " + slots);
}
首先,我认为一旦删除了唯一的行,getSlot()
将返回null,但似乎它不是Log.d
我运行的那个:
if(slots != null)
{
Log.d("notnull","not null dude");
}else
{
Log.d("null","Yay null");
}
log
返回“not null dude”..
有关如何获取slots
值的任何建议,以便我可以设置TextView
值
答案 0 :(得分:1)
首先,你应该避免使用像“not null dude”这样的日志,你会发现它们很有趣且具有启发性,但过了一段时间我们就无法编写干净而专业的代码。 我的第二个建议是使用常量而不是hadcoded字符串。创建一个类常量并添加字符串
public static final String NOT_PARKED = "You have not parked"
我的第三个建议是看一下ormlite http://logic-explained.blogspot.ro/2011/12/using-ormlite-in-android-projects.html
如果日志正常,可能是textview存在问题。尝试在条件之前在textview中放置文本以检查是否将设置。还检查布局文件。
答案 1 :(得分:1)
你的slots
绝对不是因为这个:
String slots = new String();
应该是
String slots = null;
Cursor cursor = database.query(ChosenSlotDatabaseHandler.TABLE_CHOSEN_PARKING_SLOT,
chosenSlotColumn, null, null, null, null, null);
if( cursor.moveToFirst() ) {
slots = cursor.getString(0);
}
// make sure to close the cursor
cursor.close();
return slots;
编辑:
没关系String slot = null
,
尝试使用:
if(slots.isEmpty())
{
chosenSlotView.setText(notParked);
}
else
{
chosenSlotView.setText(isParked + slots);
}