Hilfe bei App-Programmierung (Android)?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

hi
hab hier einen kleinen code schlippsel meiner .java datei (Android App).
ich hoffe jemand kann mir bei meinem problem helfen oder kennt jemanden, da ich überhaupt nicht weiterkomm.
ich möchte gern, die contValues view_1,edit_2,edit_3 und edit_4 updaten, wenn die gesuchten contValues (ktoNum,vorName,nachName,gebDat und daTum) schon einmal eingetragen wurden.

Code: Alles auswählen

    public boolean updateMaterial (String ktoNum,String vorName,String nachName,String gebDat,
    							String daTum,String view_1,String edit_2,String edit_3,String edit_4) {

        SQLiteDatabase dbmatwrite = this.getWritableDatabase();
        ContentValues contValues = new ContentValues();
        contValues.put(COL_1,ktoNum);                            
        contValues.put(COL_2,vorName);
        contValues.put(COL_3,nachName);
        contValues.put(COL_4,gebDat);
        contValues.put(COL_5,daTum);
        contValues.put(COL_6,view_1);				
        contValues.put(COL_7,edit_2);
        contValues.put(COL_8,edit_3);
        contValues.put(COL_9,edit_4);

        SQLiteDatabase dbmatread = this.getReadableDatabase();
        Cursor resulter_read = dbmatread.rawQuery("SELECT * FROM "+DATABASE_TABLEN+" WHERE KTONUM = ? AND VORNAME = ? AND 
        NACHNAME = ? 	AND GEBDAT =? AND DATUM = ?", new String[] {ktoNum,vorName,nachName,gebDat,daTum});

        if (resulter_read != null) {
            long resulter_write = dbmatwrite.update(DATABASE_TABLEN,contValues,"VIEW_1=? AND EDIT_2 = ? AND EDIT_3 = ? AND 
            EDIT_4 = ?",new String[]{view_1,edit_2,edit_3,edit_4});
            if (resulter_write !=  0) {
                return true;
            }else{
                return false;
            }
        }
        else{
            return false;
        }
    }
Zuletzt geändert von Anonymous am Donnerstag 6. Oktober 2016, 18:05, insgesamt 1-mal geändert.
Grund: Quelltext in Codebox-Tags gesetzt.
Pygoscelis papua
User
Beiträge: 206
Registriert: Freitag 13. März 2015, 18:36

Nur so nebenbei, warum fragt man bei java fragen im Pythonforum?
import this
hidden python features

JAVA = Just Another Vulnerability Announcement :D
BlackJack

@DMD-OL: Das erscheint mir alles ein wenig durcheinander zu sein. Du erstellst oder fragst Objekte ab die vielleicht überhaupt nicht benötigt werden. Und wenn man in die Dokumentation schaut gibt es mindestens eine Methode wo Du den Rückgabewert auf etwas testest was gar nicht vorkommen kann, und eine wo Du den Typ der Ergebnisvariable zwar kompatibel wählst, aber nicht wirklich nachvollziehbar ist warum Du nicht den tatsächlichen Typ verwendest.

Der Code ist mit den Umbrüchen mitten in Zeichenkettenliteralen auch kein gültiges Java.

Die Namen sind teilweise kryptische Abkürzungen und nicht visuell trennbare, zusammengemanschte Teilbegriffe. Beispiel wäre `dbmatwrite` was wohl eigentlich `writableMaterialDb` heissen sollte. Sind die beiden `SQLiteDatabase`-Objekte verschiedene Datenbanken? Falls nicht verstehe ich nicht warum da zwei verschiedene Objekte für die gleiche Datenbank erstellt werden.

Die ganzen `COL_*`-Namen sind auch äusserst unschön. Auch in Java gilt das Programme leichter verständlich sind, wenn sinnvolle Namen gewählt werden, die dem Leser verraten was der Wert bedeutet.

Warum sind in `vorName`, `nachName`, und `daTum` völlig unerwartet Grossbuchstaben mitten im Wort?

Auch in Datenbanken sind durchnummerierte (Spalten)Namen keine gute Idee.

Wenn das Aufgeräumt ist, dann wäre eine Beschreibung des Problems hilfreich. Was erwartest Du was passiert und was passiert stattdessen? Indentifiziere die Stelle im Code ab der Deine Erwartung vom tatsächlichen Verhalten abweicht.

Die Zeilen 23 bis 27 lassen sich durch ein ``return resulter_write != 0`` ersetzen.
Antworten