大佬教程收集整理的这篇文章主要介绍了我正在尝试获取 SQLite 数据库中的列总和,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想获得列价格的总和,但总价格显示为 -2
//Dbhandler
public @R_874_10930@or get@R_485_10586@lp()
{
sqliteDatabase database = this.getReadableDatabase();
@R_874_10930@or @R_874_10930@or =database.rawquery("SELEct sum(@R_485_10586@lpricE) as @R_485_10586@l from " + table_Users + ";",null);
Log.d(tag,"get@R_485_10586@lp: "+@R_874_10930@or.getCount());
return @R_874_10930@or;
}
//showallSALEitemActivity
@R_874_10930@or @R_874_10930@or = db.get@R_485_10586@lp();
int m=0;
/* while (@R_874_10930@or.movetoNext()) {
m += @R_874_10930@or.geTint(@R_874_10930@or.getcolumnIndex("@R_485_10586@lprice"));
}*/
for(int k = 0; k<=@R_874_10930@or.getCount();k++) {
m += (int) Integer.parseInt(String.valueOf(@R_874_10930@or.getcolumnIndex("@R_485_10586@lprice")));
}
int i=m;
tp.setText("" + m);
database table image
返回查询中总和的列不是 @R_485_10586@lprice
。
您将其别名为 @R_485_10586@l
。
要获得它,请使用:
@R_874_10930@or @R_874_10930@or = db.get@R_485_10586@lp();
@R_874_10930@or.moveToFirst()
int m = @R_874_10930@or.geTint(@R_874_10930@or.getcolumnIndex("@R_485_10586@l"));
或者,因为查询只返回 1 列:
int m = @R_874_10930@or.geTint(0);
您不需要 for
循环,它在您的代码中添加了两次 -1
并返回 -2
因为 @R_874_10930@or.getcolumnIndex("@R_485_10586@lprice")
返回 -1
(因为列不存在)。
您的主要问题是游标中的列名与传递给 getcolumnIndex
方法的列名不匹配。
其次你想要的值存储在 @R_874_10930@or 的列中,它不是 @R_874_10930@or 中列的索引的值。由于它是第一列也是唯一一列,因此索引将为 0 而不是 @R_485_10586@lprice 列的总和。相反,您需要使用 @R_874_10930@or get????
方法之一根据列的索引获取存储在列中的值,在这种情况下,您要使用 geTint
或 getString
(如果您想使用该值进行计算,则 geTint
表示您不必从 String 执行 parseInt,如果您只想显示该值,则可以使用 getString
) .
我建议使用以下 2 段代码:-
// DBHanlder
public int get@R_485_10586@lp() {
int rv = 0;
String @R_485_10586@l_column = "@R_485_10586@l_price";
sqliteDatabase database = this.getReadableDatabase();
@R_874_10930@or @R_874_10930@or =database.rawQuery("SELEct sum(@R_485_10586@lpricE) as " + @R_485_10586@l_column + " from " + TABLE_Users + ";",null);
Log.d(tag,"get@R_485_10586@lp: "+@R_874_10930@or.getCount());
if (@R_874_10930@or.moveToFirst()) {
rv = @R_874_10930@or.geTint(@R_874_10930@or.getcolumnIndex(@R_485_10586@l_column));
}
@R_874_10930@or.close();
return rv;
}
第二个片段:-
//showallSALEitemActivity
tp.setText(Integer.toString(get@R_485_10586@lp()));
注意
代替使用
@R_874_10930@or.geTint(@R_874_10930@or.getcolumnIndex(@R_485_10586@l_column))
因为你只返回一个你可以使用的值
@R_874_10930@or.geTint(0)
那么列名就无关紧要(如果对 SQL 有效)。我个人更喜欢不使用硬编码索引,除非必要或过于复杂而不使用它们。
以上是大佬教程为你收集整理的我正在尝试获取 SQLite 数据库中的列总和全部内容,希望文章能够帮你解决我正在尝试获取 SQLite 数据库中的列总和所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。