2017-08-08 102 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