Zapis danych do bazy SQLite Android

0

Hej,
szukam rozwiązania dotyczącego cyklicznego zapisu zmiennych "data" oraz "pm10" do bazy SQLite. Zmienne otrzymuję co 0,5 godziny z serwera w postaci JSONa. Chcę je zapisywać do bazy, następnie z 10 ostatnich rekordów chcę rysować wykres. Macie pomysł jak najlepiej to rozwiązać? Poniżej kod, który wstawia jeden wiersz do bazy.

     public void aktualizujDane(){                   
                        int data; //zmienna po sparsowaniu z JSONa
                        int pm10; //zmienna po sprarsowaniu z JSONa

                        //baza danych
                        SQLiteDatabase myDB = openOrCreateDatabase("my.db", MODE_PRIVATE, null); 
                        myDB.execSQL("CREATE TABLE IF NOT EXISTS tabela1 (data INT, pm10 INT)"); 

                        //wstawienie danych do tabeli
                        ContentValues row1 = new ContentValues();
                        row1.put("data", data);
                        row1.put("pm10", pm10);
                        myDB.insert("tabela1", null, row1);
                        myDB.close();
}
0

Z czym dokładnie masz problem? Sam pomysł, że serwer będzie jakieś dane wysyłał co pół godziny, a Ty będziesz zbierał 10 ostatnich za pomocą aplikacji na telefon uważam za nieudany. Lepiej byłoby, gdyby serwer odsyłał od razu 10 ostatnich.

0
Haskell napisał(a):

Z czym dokładnie masz problem? Sam pomysł, że serwer będzie jakieś dane wysyłał co pół godziny, a Ty będziesz zbierał 10 ostatnich za pomocą aplikacji na telefon uważam za nieudany. Lepiej byłoby, gdyby serwer odsyłał od razu 10 ostatnich.

Zgadza się, jeżeli serwer w jednej odpowiedzi dawałby 10 ostatnich wartości, byłoby super, ale daje tylko jedną ostatnią i nie mam na to wpływu.Chcę zbierać te wartości do bazy i z nich rysować wykres.

0

W takim razie musiałbyś zaimplementować serwis, który w tle będzie te dane pobierał.

0
Haskell napisał(a):

W takim razie musiałbyś zaimplementować serwis, który w tle będzie te dane pobierał.

Już mam plan jak go zrobić, nie wiem tylko jak wykonać operacje zapisywania danych do bazy. Z "palca" nie ma problemu, jeden rekord zapisałem w kodzie powyżej. Tylko jak zautomatyzować, żeby przy wykonaniu metody aktualizujDane() odpalanej co 0,5h, automatycznie wiersz (row) zwiększył się o 1 za każdym wywołaniem tejże metody i zapisał dane w kolejnym rekordzie.

0

Normalnie robisz

database.insert("Table", null, row);

gdzie "database" to obiekt SQLiteDatabase, "Table" to nazwa tabeli, a "row" to rekord do wstawienia.

Tutaj masz trening na temat zapisu danych do bazy:
https://developer.android.com/training/basics/data-storage/databases.html

0
Haskell napisał(a):

Normalnie robisz

database.insert("Table", null, row);

gdzie "database" to obiekt SQLiteDatabase, "Table" to nazwa tabeli, a "row" to rekord do wstawienia.

Tutaj masz trening na temat zapisu danych do bazy:
https://developer.android.com/training/basics/data-storage/databases.html

Masz pomysł jak wstawiać zmienną do nowego rekordu przy każdym wykonaniu metody aktualizujDane() ?
Metodę aktualizujDane() będę wywoływał automatycznie co 0,5h w celu sprawdzenia czy są nowe dane.

0

Normalnie przekazujesz poprzez parametry do metody:

 public void aktualizujDane(int data; int pm10) {
  ContentValues row = new ContentValues();
  row.put("data", data);
  row.put("pm10", pm10);
  database.insert("Table", null, row);
}
0
Haskell napisał(a):

Normalnie przekazujesz poprzez parametry do metody:

 public void aktualizujDane(int data; int pm10) {
  ContentValues row = new ContentValues();
  row.put("data", data);
  row.put("pm10", pm10);
  database.insert("Table", null, row);
}

Kod który napisałeś będzie działał tak, że zmienne "data" i "pm10" będą zapisywane za każdym wywołaniem metody do tych samych komórek w tabeli (nowe wartości będą nadpisywały stare).
Mi zależy na tym, żeby stare wartości się nie kasowały, a nowe zostawały zapisane do nowych rekordów.

1
t_sz napisał(a):

Kod który napisałeś będzie działał tak, że zmienne "data" i "pm10" będą zapisywane za każdym wywołaniem metody do tych samych komórek w tabeli (nowe wartości będą nadpisywały stare).

Hahaha, obawiam się, że nie rozumiesz co robi ten kod :) Wróć do SQL-owego przedszkola i przeczytaj trening do którego link podałem. EOT

1 użytkowników online, w tym zalogowanych: 0, gości: 1