Android 来自db.rawQuery的游标SELECT SUM返回null:如何捕获?
我正在运行以下查询Android 来自db.rawQuery的游标SELECT SUM返回null:如何捕获?,android,mysql,Android,Mysql,我正在运行以下查询 Cursor c = db.rawQuery("SELECT SUM(surveycount) FROM surveyDB WHERE species = " + "'" + szSpecies + "' AND location = " + "'" + szLocation + "'", null); 创建表时,数据库列surveycount声明为INT。下面的代码工作正常,除非没有返回具有szSpecies和szLocation的目标字符串值的记录,此时szSum点显
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();
如何捕获这个错误的游标输出?首先检查游标是否为null,然后查看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);
似乎解决了查询缺少公共计数的位置或物种限定符组合时返回零的问题。
感谢您的帮助…getCount在返回值和szSum显示null时都返回1。@portsample使用DatabaseUItils。dumpCursor@portsample我的代码中有一些问题,请更正这些问题。我不理解您的评论,您能详细说明一下吗?当szSpecies和szLocation匹配查询值的行的实际总和返回时,以及当不匹配时,getCount都返回1…当szSum=c.getString0时,此状态会生成一个空字符串…而且我已将getCount直接放在rawquery之后以及ifc之后=null&&c.getCount>0{具有相同的结果。谢谢。@pskink dumpcursor=…{Sumsurveycount=null}