Android 捕获NULL和'';如果返回SQL数据库
要捕获数据库中的空字段,我使用以下代码:Android 捕获NULL和'';如果返回SQL数据库,android,sql,null,Android,Sql,Null,要捕获数据库中的空字段,我使用以下代码: int score; if (c.isNull(11)) { score = 100; } else { score = c.getInt(11); } q.setScore(score); 但是,现在看来,当我过去在SQLLite浏览器中意外突出显示一个单元格并将其导出(甚至为空)时,它不再显
int score;
if (c.isNull(11)) {
score = 100;
} else {
score = c.getInt(11);
}
q.setScore(score);
但是,现在看来,当我过去在SQLLite浏览器中意外突出显示一个单元格并将其导出(甚至为空)时,它不再显示为NULL
,而是显示为'
. 我试过c.getInt(11)='
,但还是不行
关于如何捕获
'
的任何想法?返回'
的列将导致c.getInt
返回0。如果使用getInt()
,null
和Java中的“空”SQL值变为0
(因为null
不是有效的整数值),请使用:
如果这会产生逻辑问题,因为
0
可能意味着上下文中的其他内容,那么您可以在表上运行更新命令,将此特定列中的每个'
值更改为-1
。是的,这确实是一个解决方案,非常奇怪的是,SQL浏览器使用“”而不是将其保留为NULL。无论如何,谢谢,我想我会将所有内容更新为-1并使用int-score;如果(c.getInt(11)=-1{score=100;}否则{score=c.getInt(11);}q.setScore(score);我想,这样问题就应该解决了。很高兴我能帮上忙,我也会发现'
怪癖让人沮丧。它可能只是一个输入错误,但在测试if(c.getInt(11)=-1)
中的相等性时,请记住使用=
而不是=
。确实,只是一个输入错误:)。谢谢你的帮助,山姆!您还可以更改查询本身:selectnullif(mycl',)…
甚至selectcoalesce(NULLIF(mycl',),100)…
。
if(c.getInt(11) == 0)