Android SQLite 如何统计一个字段的总和

sinat_29454619 2016-05-18 09:14:26
SQLite数据库有个表叫account ,里面有一列的名字是balance,类型是int的。如何在dao里面写一个方法统计balance这一字段全部值的总和,并在mainactivity显示出来

我在dao类是这么写的
public Cursor getSum1(){
SQLiteDatabase db = helper.getReadableDatabase();
Cursor sum =db.rawQuery("select sum(balance)from account", null);
db.close();
return sum;
}
mainactivity是这么写的
public void SUm(){
text1=(TextView)findViewById(R.id.textView1);
String sth =dao.getSum1().toString();
text1.setText(sth);
}

运行起来,text1显示的却是android.database.sqlite.SQLiteCursor@40dc9eb8 后面@的这这一串数字每次都会不一样的
求解如何才能改正达到自己想要的效果。就是SQLite数据库有个表叫account ,里面有一列的名字是balance,类型是int的。如何在dao里面写一个方法统计balance这一字段全部值的总和,并在mainactivity的一个TextView显示出来
...全文
992 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
huaijiah 2017-05-25
  • 打赏
  • 举报
回复
我是想获取本月消费 我的dao层这样写 public Cursor c_sum(String str) { db = helper.getReadableDatabase(); String sql="select SUM(cmoney) from cmoney where cdate like ?"; Cursor cursor =db.rawQuery(sql,new String[]{str+"%"} ); return cursor; } activity //获取统计花费TextViewid TextViewid count_cost=(TextViewid)findViewById(R.id.count_cost); final Calendar c = Calendar.getInstance();// 获取当前系统日期 int mYear = c.get(Calendar.YEAR);// 获取年份 int mMonth = c.get(Calendar.MONTH)+1;// 获取月份 String str2=mYear+"-"+mMonth; // 创建CmoneyDao 类 CmoneyDao cd = new CmoneyDao(MainActivity.this); Cursor cu=cd.c_sum(str2); count_cost.setText(cu+"¥"); 大神们求救
huaijiah 2017-05-25
  • 打赏
  • 举报
回复
兄弟,不知道你解决了没有,我也遇上了这个问题
qq_34066274 2016-05-24
  • 打赏
  • 举报
回复
引用 14 楼 sinat_29454619 的回复:
[quote=引用 10 楼 qq_34066274 的回复:] [quote=引用 9 楼 sinat_29454619 的回复:] [quote=引用 8 楼 qq_34066274 的回复:] 写在dao类里,return sth;
写在dao类的话 public String getSum1(){ SQLiteDatabase db = helper.getReadableDatabase(); String sth =""; Cursor sum =db.rawQuery("select sum(balance)from account", null); if (sum.moveToNext()) { //定位到下一个 sth =sum.getString(0); } Intent intent=new Intent(); //传递数据 intent.putExtra("sum", sth); return sth; return sth; } mainactivity这么写 protected void onActivityResult(int requestCode, int resultCode, Intent intent){ if(100==resultCode){ text1=(TextView)findViewById(R.id.textView1); String sum=intent.getExtras().getString("sum"); text1.setText(sum); } super.onActivityResult(requestCode, resultCode, intent); } 但是这么写,text1并没有变化,继续求指教[/quote] select sum(balance)from account 改成 select sum(balance) from account 之前那位朋友回复你的, from前面加个空格, sql语句你自己测下有没有数据 [/quote] 没有用,加了空格了,sql语句是对的[/quote] 兄弟,, 你直接调用getSum1()那个方法不就好了 用intent的做什么,intent 那两段代码删了(intent就是意图)。 mainActivity 中直接 text1.set(getSum1());不就好了么? 自己测试下getSum1()方法return的sth有没有值,如果没有自己往上查哪里出问题。
sinat_29454619 2016-05-24
  • 打赏
  • 举报
回复
引用 10 楼 qq_34066274 的回复:
[quote=引用 9 楼 sinat_29454619 的回复:] [quote=引用 8 楼 qq_34066274 的回复:] 写在dao类里,return sth;
写在dao类的话 public String getSum1(){ SQLiteDatabase db = helper.getReadableDatabase(); String sth =""; Cursor sum =db.rawQuery("select sum(balance)from account", null); if (sum.moveToNext()) { //定位到下一个 sth =sum.getString(0); } Intent intent=new Intent(); //传递数据 intent.putExtra("sum", sth); return sth; return sth; } mainactivity这么写 protected void onActivityResult(int requestCode, int resultCode, Intent intent){ if(100==resultCode){ text1=(TextView)findViewById(R.id.textView1); String sum=intent.getExtras().getString("sum"); text1.setText(sum); } super.onActivityResult(requestCode, resultCode, intent); } 但是这么写,text1并没有变化,继续求指教[/quote] select sum(balance)from account 改成 select sum(balance) from account 之前那位朋友回复你的, from前面加个空格, sql语句你自己测下有没有数据 [/quote] 没有用,加了空格了,sql语句是对的
sinat_29454619 2016-05-24
  • 打赏
  • 举报
回复
引用 11 楼 u013442552 的回复:
意图开启了?
什么意图
sinat_29454619 2016-05-24
  • 打赏
  • 举报
回复
加了空格也没有用
qq_34066274 2016-05-23
  • 打赏
  • 举报
回复
引用 9 楼 sinat_29454619 的回复:
[quote=引用 8 楼 qq_34066274 的回复:] 写在dao类里,return sth;
写在dao类的话 public String getSum1(){ SQLiteDatabase db = helper.getReadableDatabase(); String sth =""; Cursor sum =db.rawQuery("select sum(balance)from account", null); if (sum.moveToNext()) { //定位到下一个 sth =sum.getString(0); } Intent intent=new Intent(); //传递数据 intent.putExtra("sum", sth); return sth; return sth; } mainactivity这么写 protected void onActivityResult(int requestCode, int resultCode, Intent intent){ if(100==resultCode){ text1=(TextView)findViewById(R.id.textView1); String sum=intent.getExtras().getString("sum"); text1.setText(sum); } super.onActivityResult(requestCode, resultCode, intent); } 但是这么写,text1并没有变化,继续求指教[/quote] select sum(balance)from account 改成 select sum(balance) from account 之前那位朋友回复你的, from前面加个空格, sql语句你自己测下有没有数据
sunshinebaby00 2016-05-23
  • 打赏
  • 举报
回复
意图开启了?
sinat_29454619 2016-05-20
  • 打赏
  • 举报
回复
引用 8 楼 qq_34066274 的回复:
写在dao类里,return sth;
写在dao类的话 public String getSum1(){ SQLiteDatabase db = helper.getReadableDatabase(); String sth =""; Cursor sum =db.rawQuery("select sum(balance)from account", null); if (sum.moveToNext()) { //定位到下一个 sth =sum.getString(0); } Intent intent=new Intent(); //传递数据 intent.putExtra("sum", sth); return sth; return sth; } mainactivity这么写 protected void onActivityResult(int requestCode, int resultCode, Intent intent){ if(100==resultCode){ text1=(TextView)findViewById(R.id.textView1); String sum=intent.getExtras().getString("sum"); text1.setText(sum); } super.onActivityResult(requestCode, resultCode, intent); } 但是这么写,text1并没有变化,继续求指教
qq_34066274 2016-05-20
  • 打赏
  • 举报
回复
写在dao类里,return sth;
  • 打赏
  • 举报
回复
Cursor sum =db.rawQuery("select sum(balance)from account", null); => Cursor sum =db.rawQuery("select sum(balance) from account", null);
qq_34066274 2016-05-19
  • 打赏
  • 举报
回复
引用 4 楼 qq_34066274 的回复:
昨天没注意 。 if (cursor.moveToNext()) { //定位到下一个 String sth =dao.getSum1().getString(0); }
String sth = ""; if (cursor.moveToNext()) { //定位到下一个 sth =dao.getSum1().getString(0); }
qq_34066274 2016-05-19
  • 打赏
  • 举报
回复
昨天没注意 。 if (cursor.moveToNext()) { //定位到下一个 String sth =dao.getSum1().getString(0); }
sinat_29454619 2016-05-19
  • 打赏
  • 举报
回复
引用 5 楼 qq_34066274 的回复:
[quote=引用 4 楼 qq_34066274 的回复:] 昨天没注意 。 if (cursor.moveToNext()) { //定位到下一个 String sth =dao.getSum1().getString(0); }
String sth = ""; if (cursor.moveToNext()) { //定位到下一个 sth =dao.getSum1().getString(0); }[/quote] 这个是写在dao类里面的?cursor写在mainactivity会出错的,要定义
sinat_29454619 2016-05-18
  • 打赏
  • 举报
回复
有没有人来救救,热心的大神呢
sinat_29454619 2016-05-18
  • 打赏
  • 举报
回复
引用 1 楼 qq_34066274 的回复:
String sth =dao.getSum1().toString(); 改成 String sth =dao.getSum1().getString(0); cursor 类型 你怎么直接toString()呢。。
这么改,程序没错,但是运行就直接unfortunately了
qq_34066274 2016-05-18
  • 打赏
  • 举报
回复
String sth =dao.getSum1().toString(); 改成 String sth =dao.getSum1().getString(0); cursor 类型 你怎么直接toString()呢。。

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧