我正在运行以下查询,
Cursor c = db.rawQuery("SELECT SUM(surveycount) FROM surveyDB WHERE species = " + "'" + szSpecies + "' AND location = " + "'" + szLocation + "'", null);
创建表时,数据库列"surveycount"被声明为INT。以下代码工作正常,除非没有返回具有szSpecies和szLocation的目标字符串值的记录,此时szSum显示为null。
if (c.moveToFirst()) {
szSum = c.getString(0);
c.close();}
else{
//do nothing
Toast.makeText(getActivity().getApplicationContext(),"It was NULL",Toast.LENGTH_LONG).show();
}
Toast.makeText(getActivity().getApplicationContext(),"Surveycount SUM = "+szSum+" .",Toast.LENGTH_LONG).show();
如何捕捉这个错误的光标输出?
首先检查游标是否为空,然后查看cursor.getcount()是否大于0,然后尝试从游标中检索值。
更新代码如下:
Cursor c = db.rawQuery("SELECT SUM(surveycount) FROM surveyDB WHERE species = " + "'" + szSpecies + "' AND location = " + "'" + szLocation + "'", null);
szSum="";
if(c!=null && c.getCount()>0)
{
c.moveToFirst()
szSum = c.getString(0);
c.close();
} else{
//do nothing
Toast.makeText(getActivity().getApplicationContext(),"It was NULL",Toast.LENGTH_LONG).show();
}
if(!szSum.equals(""))
Toast.makeText(getActivity().getApplicationContext(),"Surveycount SUM = "+szSum+" .",Toast.LENGTH_LONG).show();
getCount ()
:返回光标中的行数
好的,换掉这个,
szSum = c.getString(0);
对于这个
iSum=c.getInt(0);
似乎已经解决了在查询缺少公共计数的位置或物种限定符组合时返回零的问题。谢谢你的帮助。。。