Android Datenbank Klasse nur für CRUD-Operation, oder auch mehr ?

jhjh

Bekanntes Mitglied
Hallo,
für mein Frage ist ein Beispiel glaube am besten.
Angenommen ich habe in einer Activity boolsche Variablen die, je nach Datensatz aus einer SQLite Datenbank, true oder false ergeben.
In etwa so:
Code:
if (wert_1 == 1){
   b = true
   if (wert_2 == 1 && wert_3 == 5){
      f = true
      g = false
   else{
     t = false
else if ....
.....
....
Über eine Datenbank Klasse habe ich Zugriff auf die Datenbank und hole mir von dort die Werte bzw. den Datensatz.
Ich frage mich jetzt ob es "ok" ist, wenn ich diesen Vergleich direkt über die Datenbank Klasse abwickle und das Ergebnis dann an die jeweilige Activity weiterleite ?
Oder sollte ich über die Datenbank Klasse nur den Datensatz an die Activity weiterleiten und dort dann den Vergleich machen ? ODER ist es einfach völlig egal wie ich das mache ? :D:D
 

jhjh

Bekanntes Mitglied
Eigentlich dieser hier. Nach dem ersten Post gab es meinen Beitrag nicht und habe es dann nochmal abgeschickt. Habe dann erst gemerkt, dass mein ursprünglicher Beitrag automatisch in das andere Unterforum verschoben wurde.
 

mihe7

Top Contributor
Lass es mich mal so sagen: wenn Dein Beispiel tatsächlich Dein Code ist, dann ist die Frage, wohin damit, Dein geringstes Problem :p

Andersrum: Du musst schon ein wenig genauer werden, worum es geht. Über ein paar logische Verknüpfungen über nichtssagende Werte kann man nicht pauschalieren.
 

jhjh

Bekanntes Mitglied
Wenn Dein Beispiel tatsächlich Dein Code ist, dann ist die Frage, wohin damit, Dein geringstes Problem
Wegen den nicht aussagekräftigen Variablenamen meinst du ? :rolleyes:
Aber nein war nur ein Beispiel.

Beispielsweise habe ich eine Funktion, die "gelöschte" Kunden nach einen Monat "wirklich" löscht :D Also es ist so, dass ein gelöschter Kunde vorerst nur verschoben wird, sodass man noch Infos zu dem Kunden einsehen kann. Nach einem Monat wird der dann halt aus der Datenbank gelöscht. Die Funktion ist derzeit in meiner Datenbank Klasse. Über meine MainActivity rufe ich die Funktion nach dem Start der App auf. Ich habe jetzt die Möglichkeit
a) ich lasse es so
oder
b) ich lasse mir von der MainActivity jeden Kunden aus der Datenbank (über die Datenbank Schnittstelle) zurückgeben ->Überprüfe ob Kunde xy gelöscht wird oder nicht -> Falls Löschung, dann erteile ich der Datenbank nur den "Lösch Befehl"...Derzeit wird über die Datenbank Schnittstelle auch die Überprüfung durchgeführt

Code:
//Löschen von Kunden die ein Monat oder länger keine Kunden mehr sind
public void ueberpruefeAbgaenger(Date datumHeute) {
    SQLiteDatabase db = this.getWritableDatabase();
    Datum datum = new Datum();
    Calendar cal = Calendar.getInstance();
    cal.setTime(datumHeute);
    int id, tagHeute, monatHeute, tagAbgang, monatAbgang;
    String datumAbgang;
    tagHeute = cal.get(Calendar.DAY_OF_MONTH);
    monatHeute = datumHeute.getMonth() + 1;
    //Alle gelöschten Kunden aus der DB holen
    String str = "SELECT Abgang,_id FROM Kunde";
    Cursor cursor = db.rawQuery(str, null);

    if (cursor.moveToFirst()) {
        do {
            datumAbgang = cursor.getString(0);
            //Falls Kunde gelöscht wurde
            if (datumAbgang != null) {
                id = cursor.getInt(1);
                monatAbgang = datum.getMonat(datumAbgang);
                tagAbgang = datum.getTag(datumAbgang);
                //Falls Kunde im vorherigen Monat gelöscht wurde
                if (monatHeute == monatAbgang + 1) {
                    //Falls der Löschtag größer als der Heutige Tag ist
                    if (tagHeute >= tagAbgang) {
                        //Kunde löschen
                        delete(id);
                    }
                    //Falls Kunde bereits vor mehreren Monaten gelöscht wurde
                } else if (monatHeute > monatAbgang) {
                    //Kunde löschen
                    delete(id);
                }
            }
        } while (cursor.moveToNext());
    }
}
 

mihe7

Top Contributor
Prinzipiell haben DB-Geschichten nichts im UI verloren. Ich würde auch nicht jeden Kunden einzeln anschauen sondern einfach ein SQL-Statement ausführen, mit dem alle zu löschenden Kunden auf einmal gelöscht werden. Könnte in etwa so funktionieren:
SQL:
DELETE FROM Kunden WHERE Abgang IS NOT NULL AND date(substr(Abgang,7,4) || substr(Abgang,4,2) || substr(Abgang,1,2)) <= date('now', '-1 month');
 

jhjh

Bekanntes Mitglied
Danke, werde ich Morgen mal probieren! Wenn ich das so sehe denke ich, dass ich bei vielen anderen Sachen auch zu kompliziert gedacht habe und vieles hätte vereinfachen können :eek:
btw: Kann man das mit dem Kommentieren in etwa so machen wie ich das gemacht habe ? Ist das ein guter Stil ? Gerade bei Fallunterscheidungen finde ich das dann einfach viel Übersichtlicher. Auch bei meine Definierten Methoden habe ich Kommentare gesetzt die mit paar Wörter ganz grob beschreiben, was die Methode macht. Ansonster setze ich Kommentare meist du bei API Spezifischen Sachen bei denen man ohne ein Kommentar nicht so wirklich verstehen würde was da passiert.
 

mihe7

Top Contributor
Kommentare sind meist Zeichen für schlechten Code. Ein Kommentar soll beschreiben warum etwas gemacht wurde und nicht was gemacht wird. Das Was soll nämlich im Code stehen. Guter Code liest sich fast wie Prosa - ohne Kommentare.

Mal ein paar Beispiele:
Java:
            //Falls Kunde gelöscht wurde
            if (datumAbgang != null) {

Die Intention Deines Kommentars ist klar: datumAbgang != null ist nichtssagend. Um dem Spaß Ausdruck zu verleihen, fügst Du einen Kommentar ein.

Warum nicht einfach:
Java:
            if (istKundeZuEntfernen(datumAbgang)) {
Das ist nur ein Beispiel, um die Idee zu zeigen. Je nachdem, wie die Terminologie ist, kann die Methode natürlich auch anders heißen.

Ein anderes Negativbeispiel:
Java:
                    //Falls der Löschtag größer als der Heutige Tag ist
                    if (tagHeute >= tagAbgang) {
Hier gibt es gleich zwei Probleme. Erstens ist der Kommentar in meinen Augen falsch: der Code sagt mir das genaue Gegenteil (übrigens oft ein Problem von Kommentaren; insbesondere im Zusammenhang mit Copy & Paste oder weil der Code geändert, der dazugehörige Kommentar aber nicht angepasst wurde). Zweitens braucht der Code keinen Kommentar, wenn die Variablennamen stimmen. Das, was im Kommentar steht, steht 1:1 im Code. Wenn Dir der Code zu wenig sagt, dann ändere ihn. Zum Beispiel durch Umbenennung von Variablen oder Einführung von Methoden (wie im Beispiel vorhin).
 

jhjh

Bekanntes Mitglied
Vielen Dank!
Ja ist glaube besser, wenn ich die Namen von Variablen/Methoden/Klassen so wähle, dass es zu keinen Missverständnissen kommen wird und ich mir die Kommentare dadurch sparen kann.
Erstens ist der Kommentar in meinen Augen falsch: der Code sagt mir das genaue Gegenteil
True!:rolleyes:
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Null-Pointer-Exception in ListView - wird über Datenbank gefüllt Android & Cross-Platform Mobile Apps 1
N Android Ich kann mit meiner App nicht auf die Datenbank zugreifen Android & Cross-Platform Mobile Apps 4
C SQLite Datenbank in Kotlin - App stürtzt immer ab Android & Cross-Platform Mobile Apps 0
J Android Probleme mit der Realm Datenbank Android & Cross-Platform Mobile Apps 3
M App Datenbank Server Android & Cross-Platform Mobile Apps 5
L Android SQLite Datenbank auf SDCard speichern Android & Cross-Platform Mobile Apps 5
B Android Probleme mit Realm Datenbank Android & Cross-Platform Mobile Apps 2
J SQLite Datenbank sichern/in ein anderes Verzeichnis kopieren Android & Cross-Platform Mobile Apps 2
W Gezielte Ausgabe von abgefragten Inhalt aus Datenbank Android & Cross-Platform Mobile Apps 1
B Android SQLite Datenbank 2 Einträge vertauschen? Android & Cross-Platform Mobile Apps 14
G Android Daten in einer Datenbank speichern Android & Cross-Platform Mobile Apps 1
EisKaffee Android Datenbank auf real Device Android & Cross-Platform Mobile Apps 4
S Dynamische EditText View eingaben in Datenbank speichern Android & Cross-Platform Mobile Apps 0
U SQLite-Datenbank Probleme Android & Cross-Platform Mobile Apps 8
D Android-App Datenbank Android & Cross-Platform Mobile Apps 4
C Android Listen/Daten aus der SQLLite Datenbank darstellen Android & Cross-Platform Mobile Apps 2
F Android Datenbank upgrade wird nicht durchgeführt Android & Cross-Platform Mobile Apps 2
P J2ME - Anbindung an externe Datenbank Android & Cross-Platform Mobile Apps 3
M Welche Datenbank für J2ME? Android & Cross-Platform Mobile Apps 5
M Datenbank Android & Cross-Platform Mobile Apps 2
B Was fehlt mir hier für diese Klasse? ich habe es mit (>>> ... <<<) markiert. Android & Cross-Platform Mobile Apps 4
W aus Fragmente in andere Klasse wechseln mit Button Android & Cross-Platform Mobile Apps 3
H Android Aufrufen von "setContentView" in einer anderen Klasse Android & Cross-Platform Mobile Apps 3
ms_cikar Thread / Intent als externe klasse Android & Cross-Platform Mobile Apps 1
S Android CheckBox Status von anderer Klasse aus ändern Android & Cross-Platform Mobile Apps 4
M Android Switch-Klasse stoppt Android App / java.lang.NullPointerException Android & Cross-Platform Mobile Apps 5
C Auf innere (Thread)Klasse zugreifen, von anderer Klasse aus Android & Cross-Platform Mobile Apps 3
G Klasse im selben Package aufrufen Android & Cross-Platform Mobile Apps 18
A Fehler beim Starten eines Intents - alles in einer Klasse funktioniert... Android & Cross-Platform Mobile Apps 4
A Kann nicht in TextView einer anderen Klasse schreiben - wieso? Android & Cross-Platform Mobile Apps 9
J Java ME Canvas Klasse Gameloop und Funktion Android & Cross-Platform Mobile Apps 2
M Wie in einer anderen "nicht canvas" klasse zeichne Android & Cross-Platform Mobile Apps 5
Kazudemruzo Android API/Library für externe Entwickler zur Verfügung stellen Android & Cross-Platform Mobile Apps 7
C Consent für Admob mit ump / funding choices Android & Cross-Platform Mobile Apps 6
J SharedPreferences für User-Session Android & Cross-Platform Mobile Apps 2
M Barrierefreie Appentwicklung für Android - Suche Codebeispiele Android & Cross-Platform Mobile Apps 8
I App für Fire HD entwickeln Android & Cross-Platform Mobile Apps 3
T Bringen mir die Java-Basics irgendetwas für die Android-Programmierung Android & Cross-Platform Mobile Apps 4
L Textfeld für Dezimalzahl mit Vorzeichen Android & Cross-Platform Mobile Apps 2
B Android Projekt für Android und IOS erstellen? Android & Cross-Platform Mobile Apps 5
J Impressumspflicht für App, wenn ich kein Unternehmer bin? Android & Cross-Platform Mobile Apps 13
T Android Equalizer für Android Android & Cross-Platform Mobile Apps 3
L Zeitstempel für Sensordaten bekommen Android & Cross-Platform Mobile Apps 3
L Android Texterkennung für Android? Android & Cross-Platform Mobile Apps 1
L Android Chart API für Android Android & Cross-Platform Mobile Apps 0
T Android Datenbankverbindung in Service für Push Notification Android & Cross-Platform Mobile Apps 0
R Android USB Treiber für Huawei Android & Cross-Platform Mobile Apps 1
M Hilfe bei App Programmierung für Android Android & Cross-Platform Mobile Apps 1
B Script für Android Android & Cross-Platform Mobile Apps 1
H Datenprotokoll für Graphview Android & Cross-Platform Mobile Apps 2
M Android Obfuscation für Strings Android & Cross-Platform Mobile Apps 8
S Bilder mit fester grösse für verschiedene Android Endgeräte Android & Cross-Platform Mobile Apps 2
D Android Layout für alle Geräte Android & Cross-Platform Mobile Apps 4
A String[] für Lisadapter Android & Cross-Platform Mobile Apps 4
D Lib für (Desktop-)Java und Android schreiben Android & Cross-Platform Mobile Apps 7
J MySQL Simulation für Android App Android & Cross-Platform Mobile Apps 2
kaoZ Tutorial .xml Layouting für z.B ListView elemente Android & Cross-Platform Mobile Apps 7
W Java Editor für Android +Emulator Android & Cross-Platform Mobile Apps 7
M 20 Image Button für jede Auflösung positionieren Android & Cross-Platform Mobile Apps 3
L Android ActionBar mit unterschiedlichen Farben für Tabs Android & Cross-Platform Mobile Apps 3
S Voraussetzungen für Android-Apps Android & Cross-Platform Mobile Apps 7
R Sinnvoller Ablageort für Leveldaten Android & Cross-Platform Mobile Apps 8
B App bei Play-Store für bestimmte auflösungen anbieten? Android & Cross-Platform Mobile Apps 3
G extends Activity für Berechnungen? Android & Cross-Platform Mobile Apps 7
H Progrämmchen für Symbian Android & Cross-Platform Mobile Apps 4
G wiederkehrenden Wert für Design in XML ablegen Android & Cross-Platform Mobile Apps 2
L Android SearchBox für Custom Listview Android & Cross-Platform Mobile Apps 5
T Android KontrollApp für Nitrado Server Android & Cross-Platform Mobile Apps 2
L Android Eine Kleinigkeit für Profis Android & Cross-Platform Mobile Apps 2
G Android C++ Quellcode für Android Geräte compilieren Android & Cross-Platform Mobile Apps 2
T Zeit in zwei Zahlen für Widget zerlegen Android & Cross-Platform Mobile Apps 2
J Apps für Android programmieren - Android Handy notwendig oder reicht Simulator? Android & Cross-Platform Mobile Apps 3
A Android SimpleDateFormat gibt für Date unter android anderes Datum zurück als in Std. Java Android & Cross-Platform Mobile Apps 2
H Android Landscape Modus für App dektivieren Android & Cross-Platform Mobile Apps 3
M Frage zu Java Programm für Windows Mobile 6.5 Android & Cross-Platform Mobile Apps 2
H Welches JDK für Huawei G7002? Android & Cross-Platform Mobile Apps 6
C Panel/View für Android Android & Cross-Platform Mobile Apps 3
C Sanke für Android Android & Cross-Platform Mobile Apps 3
Kukulkan Welche Mindestanforderungen (JDK) für Android und BB? Android & Cross-Platform Mobile Apps 8
G Views für verschiedenen Bildschirmgroeßen Android & Cross-Platform Mobile Apps 2
thE_29 Widget für verpasste Anruf + SMS Android & Cross-Platform Mobile Apps 2
A Android Android Parameter für VM Android & Cross-Platform Mobile Apps 7
O Entwickler für Java Anwendungen auf Handy gesucht! Android & Cross-Platform Mobile Apps 3
S JButton in GUI für Handys? Android & Cross-Platform Mobile Apps 3
D Event für Tastensperre? Android & Cross-Platform Mobile Apps 3
G WTK für Nokia Android & Cross-Platform Mobile Apps 2
P bestimmte API für XDA ORBIT2 Android & Cross-Platform Mobile Apps 3
S Idee gesucht für ein kleines Programm Android & Cross-Platform Mobile Apps 3
M ein image pixel für pixel aufbauen : setPixel() ? Android & Cross-Platform Mobile Apps 1
M Handyprogramm für U-Bahn-Fahrplan für Siemens SK65 Android & Cross-Platform Mobile Apps 2
J Empfehlungen für ME-Anfänger Android & Cross-Platform Mobile Apps 2
K Anwendung für Handy programmieren Android & Cross-Platform Mobile Apps 1
P Java für PDA DELL Axim 51 Android & Cross-Platform Mobile Apps 4
M Virtuelle Machiene für PDA Android & Cross-Platform Mobile Apps 8
B Programm für NokiaComunicator erstellen Android & Cross-Platform Mobile Apps 2
K Programme für Handy erstellen Android & Cross-Platform Mobile Apps 3
M Java-Programme für Handy auf Desktop-PC ausführen Android & Cross-Platform Mobile Apps 4
T Für Handy Game die Sprache umschreiben? Android & Cross-Platform Mobile Apps 24
M java game für handy mit grahi. oberfläche Android & Cross-Platform Mobile Apps 1
D java.security.MessageDigest (für ME?) Android & Cross-Platform Mobile Apps 1

Ähnliche Java Themen

Neue Themen


Oben