2017-11-27 11 views
0

を選択SQLiteの私はテーブルを持っているように見えます:を合計し、ケース

ID | FLAG | audit 
1 | 1 | 12 
2 | 0 | 12 
3 | 1 | 12 
4 | 1 | 12 

私はFLAG欄に1の値をカウントしたいので、私は行うには、このコードを使用しています:

databaseHandler

public int getall(){ 
    String countQuery = "select count(audit) as jumlahaudit, SUM (CASE WHEN flag=1 " + 
    "THEN 1 ELSE 0 END) FROM API GROUP BY audit"; 

    // still get 1 using this code 
    // String countQuery = "select flag, count(*) from API group by flag "; 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor= db.rawQuery(countQuery, null); 
    return cursor.getCount(); 
} 

MainActivity

public class MainActivity extends AppCompatActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     db.getall(); 

     Log.d("COba yang ke dua", String.valueOf(db.getall())); 
     } 
} 

Iてる期待3の結果が、でも、私は別のクエリを使用してい1を示すlogcatを与えるlogcat、

logcat

は誰も私を助けることができますか?

+0

?帰りは何ですか? – missionMan

+0

@missionMan sry sir、これを忘れて編集しましたが、結果は同じです – flix

答えて

1

cursor.getCount()は行数を返します。したがって、クエリの結果は「3」ですが、「1」は1行になります。このように:

Count 
----- 
    3 (1 row) 

適切なコードを読み取り、 "3" の

cursor.getInt(0); 

でなければなりません

のgetAllでリターン()メソッドです
+0

カーソルを 'cursor.get(0);'に変更するだけですが、カーソルの 'getCount()を示すエラーは( int) ' – flix

+0

私の悪いコードを正しく見ていない、あなたのコードは実際に働いていたかもしれないが、私は' cursor.getint(0) 'を使用していますよ、助けてくれてありがとう – flix

+0

ようこそ@flix – missionMan

関連する問題