我有一个与数据库相关的程序。我通过使用以下命令插入一行来开始我的程序。
long id = db.insertMajor(null, null, null, null);
它完美无缺。我改变信息,但忽略了,因为暂时我注释掉了所有这些线。现在我想检查一下它是否为null。如果它不是我想检查一个复选框。如果它是null我想要不选中该框。到目前为止,我有这条线进行测试。
String change = db.getMajorTitle(value).getString(1);
if (change.equals(null)) {
filled = false;
}
填充的布尔值将选中是否复选框。如果数据库字段填满或不填写,我总是得到一个复选标记。怎么了?
更新: 由于没有人弄明白我会发布我的大部分代码来尝试帮助弄清楚。我还重置了我的模拟器,以确保数据损坏没有问题。
chk1.setChecked(checker(1));
chk2.setChecked(checker(2));
chk3.setChecked(checker(3));
chk4.setChecked(checker(4));
}
boolean checker(int value){
DBAdapter db = new DBAdapter(this);
boolean filled = false;
db.open();
for (int i = 1; i <= 4; i++) {
String change = db.getMajorTitle(value).getString(1);
if (change == null) {
filled = false;
}else{
filled = true;
}
}
db.close();
return filled;
}
如果有人复制了这个并且它有效,请告诉我我的模拟器或日食或其他什么可能出错。谢谢大家的支持。
FINISHED: 我注意到在程序的另一部分我将null更改为“”。我要感谢大家的正确态度,并向我展示了不同的编码方式。
答案 0 :(得分:1)
if (change.equals(null)) {
如果change
实例不是null
,则上述条件始终会返回false
。请阅读Object equality constraints了解详情。
如果您想查看null
使用
if( change == null) {
// change is null, update filled field
} else {
// change is not null, update filled field
}
如果数据库字段已填满 选中此复选标记。怎么了?
我想您已将filled
字段初始化为true
,并且从未将其设置为false
,因为您的if
条件始终返回false
或抛出NullPointerException
。
答案 1 :(得分:1)
你真的不需要if语句。
filled = (change != null);
答案 2 :(得分:0)
User ExceptionHandling机制。那你就会成功。像
try {
if(change!=null)
{
//do ur work,if not null
}
else
{
// do some thing
}
}catch(NullPointerException e)
{
//do ur work,if null.
}