tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
0
ZUGRIFFE
824
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    takki takki ist offline Mitglied
    Registriert seit
    Feb 2009
    Beiträge
    10
    Hallo zusammen.
    Ich muss für ein Projekt Java Objekte in einer Datenbank abspeichern. Dabei handelt es sich um Objekte der Klassen Double, String, Arrays verschiedener Dimensionen dieser beiden Klassen und Map. Ich muss dafür eine Klasse mit den Funktionen "writeObject(String name, Object o)" und "Object loadObject(String name)" schreiben. LoadObject soll dabei natürlich den Typ der Daten beibehalten. Wenn ich also z.B. ein Double mit writeObject speicher, dann soll loadObject auch ein Objekt vom Typ double zurückgeben.
    Nun stehe grundsätzlich schonmal vor der Frage wie ich das DB-Schema aufbaue. Momentan hab ich mich dafür entschieden, die Daten einfach in einem Blob zu speichern, egal von welchen Typ sie sind. Meint Ihr das ist der richtige Weg? Oder sollte ich lieber verschiedene Spalten/Tabellen anlegen, je nachdem um was es sich für einen Typ handelt?

    Wie erwähnt speicher ich zur Zeit alles in einem Blob. Habe mich im Internet ein wenig umgeschaut und kam dann letztendlich auch auf folgende Implementierungen für meine Funktionen:

    Object loadObject(String name)
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    ...
    pstmt = conn.prepareStatement("SELECT data FROM input WHERE name = ?");
    pstmt.setString(1, name);
    ResultSet rs = pstmt.executeQuery();
    rs.next();
    Blob b = rs.getBlob(1);
    InputStream is = b.getBinaryStream();
    ObjectInputStream ois = new ObjectInputStream(is);
    return ois.readObject();
    ...

    writeObject(String name, Object o)

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    ...
    PreparedStatement pstmt = conn.prepareStatement("INSERT INTO input(name, data) VALUES (?, ?)");
    pstmt.setString(1, name);
    pstmt.setObject(2, o);
    pstmt.executeUpdate();
    pstmt.close();
    ...
    Exception-Handling spare ich mir und Euch hier, hab ich aber natürlich entsprechend gemacht


    Diese Lösung funktioniert auch, allerdings nur, wenn die Objekte keine Strings oder Doubles waren! Habe ich einen String in die DB geschrieben und möchte ihn wieder lesen, so wird eine java.io.StreamCorruptedException geworfen. Gleiches bei Doubles.

    Kann mir da jemand helfen?

    Viele Grüße,
    Takki

    Edith: Ok, habe für das Problem eine Lösung gefunden. Wenn man die write-Funktion wie auf http://www.javabeginner.com/uncatego...-serialization beschrieben implementiert, dann haut alles hin
    Geändert von takki (05.01.11 um 15:18 Uhr)
     

Ähnliche Themen

  1. Wo Datenbank speichern?
    Von gander im Forum .NET Datenverwaltung
    Antworten: 8
    Letzter Beitrag: 19.10.10, 08:59
  2. Model-Objects speichern
    Von maksbor80 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 25.08.08, 13:29
  3. XML in Datenbank speichern
    Von Radhad im Forum PHP
    Antworten: 1
    Letzter Beitrag: 02.06.07, 00:05
  4. Speichern, Verwende C#, MSSQL-Server,Map-Objects
    Von Kai_Jack im Forum .NET Datenverwaltung
    Antworten: 3
    Letzter Beitrag: 22.08.05, 19:53
  5. Checkbox in Datenbank speichern
    Von mccoy im Forum PHP
    Antworten: 6
    Letzter Beitrag: 30.11.04, 15:13