- Forum-Beiträge: 63
15.03.2012, 21:52:33 via Website
15.03.2012 21:52:33 via Website
weiß jemand vielleicht, wie man eine komplexe Datenstruktur wie eine ArrayList:
public ArrayList<meineKlasseMitInnerenKlassen> arrayList_meineObjekte = new ArrayList<meineKlasseMitInnerenKlassen>();
in der SQLite ablegen kann? Ich würde gerne die DB nehmen, weil ich auch noch ein paar Booleans habe, die
ich ebenfalls dort ablegen würde und damit die Daten auch erhalten bleiben, wenn das App beendet wird.
Ich habe gelesen, dass man dafür die ArrayList in einfache Datentypen zerschneiden muss, da man Objekte nicht in
SQLite ablegen kann. Dabei müssten natürlich die Eigenschaften der Objekte erhalten bleiben.
Ich habe auch ein paar Beispiele gefunden. Die arbeiten jedoch nicht mit so komplexen Strukturen wie Objekte sondern zB mit longs. Weiß jemand, wie der Quelltext auszusehen hat, wenn man nun Objekte speichern möchte?
Bsp:
public static void storeInDB(ArrayList<Long> longs) throws IOException, SQLException {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
DataOutputStream dout = new DataOutputStream(bout);
for (long l : longs) {
dout.writeLong(l);
}
dout.close();
byte[] asBytes = bout.toByteArray();
PreparedStatement stmt = null; // however you get this...
stmt.setBytes(1, asBytes);
stmt.executeUpdate();
stmt.close();
}
public static ArrayList<Long> readFromDB() throws IOException, SQLException {
ArrayList<Long> longs = new ArrayList<Long>();
ResultSet rs = null; // however you get this...
while (rs.next()) {
byte[] asBytes = rs.getBytes("myLongs");
ByteArrayInputStream bin = new ByteArrayInputStream(asBytes);
DataInputStream din = new DataInputStream(bin);
for (int i = 0; i < asBytes.length/8; i++) {
longs.add(din.readLong());
}
return longs;
}
return longs;
}
Vielen Dank!
— geändert am 16.03.2012, 05:23:48
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.