0

いくつかのテーブルでデータベースを作成し、friend という名前のテーブルを 1 つ取得しました。友人の出費はほとんどなく、一部の出費は別の友人と分担する場合があります。今、私は友人を削除しようとしています。友人が別の友人と費用を共有すると、別の友人と共有した友人の費用が別の友人に追加され、費用は削除されません。次に、別の友人と共有されていない費用は直接削除され、その友人には多くの費用があるため、どの友人にも追加されません。問題は、別の友人に費用を追加しようとしたときに、うまくいかないことです。そして、私はエラーが発生していません。

ここに私のコードがあります:残りのコードはうまく機能するので、if(sharerList.size()> 1)...内で問題が発生すると思います。

  public void deleteFriend(String id) {
    Log.d(LOGCAT, "delete");
    SQLiteDatabase database = this.getWritableDatabase();
    ArrayList<HashMap<String, String>> wordList = new ArrayList<HashMap<String, String>>();
    String selectQuery = "SELECT * FROM FriendsExpenses WHERE friendId='" + id + "'";
    SQLiteDatabase databaseread = this.getReadableDatabase();
    Cursor cursor = databaseread.rawQuery(selectQuery, null);
    if (cursor.moveToFirst()) {
        do {
            HashMap<String, String> map = new HashMap<String, String>();
            map.put("expenseId", cursor.getString(0));
            wordList.add(map);
        } while (cursor.moveToNext());
    }
    for (int a=0; a<wordList.size();a++){
        HashMap<String, String> ValexpenseId = wordList.get(a);
        for (Entry<String, String> entry : ValexpenseId.entrySet()) {
            String value = entry.getValue();
            String selectQuery2 = "SELECT * FROM FriendsExpenses WHERE expenseId='" + value + "'";
            SQLiteDatabase databaseread2 = this.getReadableDatabase();
            Cursor cursor2 = databaseread2.rawQuery(selectQuery2, null);
            ArrayList<HashMap<String, String>> sharerList = new ArrayList<HashMap<String, String>>();
            if (cursor2.moveToFirst()) {
                do {
                    HashMap<String, String> map = new HashMap<String, String>();
                    map.put("friendId", cursor2.getString(0));
                    wordList.add(map);
                } while (cursor2.moveToNext());
            }
            else{};
            if (sharerList.size() > 1){
                String selectQuery3 = "SELECT expenseTotal FROM expenses WHERE expenseId='" + value + "'";
                SQLiteDatabase databaseread3 = this.getReadableDatabase();
                Cursor cursor3 = databaseread3.rawQuery(selectQuery3, null);
                String expenseTotal = null;
                if (cursor3.moveToFirst()) {
                    do {
                        expenseTotal = cursor3.getString(cursor3.getColumnIndex("expenseTotal"));
                    } while (cursor3.moveToNext());
                }
                for (int b=0; b<sharerList.size();b++){
                    HashMap<String, String> ValfriendId = sharerList.get(b);
                    for (Entry<String, String> entry2 : ValfriendId.entrySet()) {
                        String value2 = entry2.getValue();
                        String currentSpend = currentSpending(value2);
                        double currentSpending = (Double.parseDouble(currentSpend));
                        double expTotal = (Double.parseDouble(expenseTotal));
                        double newSpending = currentSpending + ((expTotal/sharerList.size()) /sharerList.size()-1);
                        updateSpending(value2, newSpending);
                    }
                }
            }
            else
            {
                String deleteQuery = "DELETE FROM expenses where expenseId='" + value + "'";
                Log.d("query", deleteQuery);
                database.execSQL(deleteQuery);
            }               
        }
    }
    String deleteQuery = "DELETE FROM friends where friendId='" + id + "'";
    String deleteQuery2 = "DELETE FROM FriendsExpenses where friendId='" + id + "'";
    Log.d("query", deleteQuery2);
    Log.d("query", deleteQuery);
    database.execSQL(deleteQuery2);
    database.execSQL(deleteQuery);
}
4

1 に答える 1

0

sharerListエントリを追加しないため、空です。

getString(0)など、他のコピー/貼り付けエラーがある可能性がありますSELECT *

于 2013-11-11T17:39:09.577 に答える