2017-08-08 107 views
1

我的代码是如何在SqlLite中使用where条件获得列的总和?

Button.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) { 
      int cv; 
      String getmont="",getyear=""; 
      getmont=year.getText().toString(); 
      getyear= (String) sid.getSelectedItem(); 
      SQLiteDatabase db; 
      db = openOrCreateDatabase("monthapp", MODE_PRIVATE, null); 
      curtop = db.rawQuery("SELECT SUM(currentpaid)FROM monthvaluesOrgin WHERE curmonth='" + getmont + "' AND curyear='" + getyear + "'", null); 
      if (curtop.moveToNext()) { 
       cv=curtop.getInt(0);  
       Toast.makeText(getApplicationContext(),cv,Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 

如何打印/吐司和值? 它总是显示错误EofException

我的应用程序显示“不幸您的应用程序已停止”。

请给我一个解决方案! 在此先感谢!

+0

您的代码可能会在[SQL注入]的风险(https://stackoverflow.com/questions/601300/what-is-sql-injection )。你应该使用查询参数。 – litelite

+0

我在初学者级别请展示如何做到这一点 – user8434962

+0

这里是一个例子https://stackoverflow.com/a/9341246/3072566 – litelite

回答

0

您在使用makeText的错误签名。因为cvint编译器认为您正在尝试传递资源ID,并且因为您的总和不太可能是有效的字符串ID,所以您的应用程序崩溃,因为makeText无法在字符串资源中找到该数字。尝试使用valueOfcv转换为字符串是这样的:

Toast.makeText(getApplicationContext(),String.valueOf(cv),Toast.LENGTH_SHORT).show(); 
+0

谢谢,但它只显示。 “0” – user8434962

+0

这意味着你现在和为0检查你的数据,你的表可能是空 – litelite

+0

我列具有价值 不好意思问太多的疑惑 – user8434962