java.io.StreamCorruptedException: invalid stream header: 626F6775 mit mysql-blob -, java-Objekte und benutzerdefinierte Objekt

Arbeite ich an einer Anwendung, wo muss ich speichern ein Objekt einer benutzerdefinierten Klasse in eine Datenbank und in der Lage sein, um das Objekt abzurufen und verwenden Sie es zu einem späteren Zeitpunkt.

Die benutzerdefinierte Klasse Quiz und die Datenbank ist mySQL, und ich bin mit einem blob speichern Sie das Objekt.

Ich bin in der Lage, speichern Sie das Objekt, aber wenn ich versuche, um das Objekt abzurufen für den Einsatz, ich erhalte die folgende Fehlermeldung. Ja, ich habe gegoogelt. Ich fand einige ähnliche Probleme und versucht, Ihre Lösungen ohne Erfolg. Bitte sehen Sie sich den code Auszüge unten und lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

Danke!

//Storing the Quiz object

public static void setQuizObject(String classId, Object quiz, int quizEnabled) {
    try {
        if (connect.isValid(0)) {
            statement = connect.createStatement();
            statement.executeUpdate("insert into " + 
                    DBHelper.MJLADB_QUIZTABLE + "(" + 
                    DBHelper.MJLADB_QUIZTABLE_CLASSID + ", " + 
                    DBHelper.MJLADB_QUIZTABLE_QUIZOBJECT + ", " + 
                    DBHelper.MJLADB_QUIZTABLE_QUIZENABLED + ") values ('" + 
                    classId + "', '" + 
                    quiz + "', '" + 
                    quizEnabled + "')");
        }
    } catch (SQLException e) {
        //TODO Auto-generated catch block
        e.printStackTrace();
    }
}

//Getting the quiz object (handling the conversion from resultset to an arraylist)

    public static ArrayList<Object[]> resultSetToTableModel(ResultSet row) throws SQLException {

        ArrayList<Object[]> classList = new ArrayList<Object[]>();
        ResultSetMetaData meta = row.getMetaData();

        Object cols[] = new Object[meta.getColumnCount()];
        for (int i = 0; i < cols.length; i++) {
            cols[i] = meta.getColumnLabel(i + 1);
        }
        classList.add(cols);

        while (row.next()) {
            Object data[] = new Object[cols.length];
            int quizColumn = -1;
            try {
                quizColumn = row.findColumn(DBHelper.MJLADB_QUIZTABLE_QUIZOBJECT_A);
            }
            catch (SQLException e) {
                quizColumn = -1;
            }

            for (int i = 0; i < data.length; i++) {
//             if (row.getInt(DBHelper.MJLADB_QUIZTABLE_QUIZOBJECT_A) == (i + 1)) {
                Object x;
                Quiz quiz;
                if (quizColumn == (i + 1)) {
                    InputStream is = row.getBlob(i + 1).getBinaryStream();
                    try {
                        ObjectInputStream ois = new ObjectInputStream(is);
                        x = ois.readObject();
                        quiz = (Quiz)x;
                        data[i] = quiz;
                    } catch (IOException e) {
                        //TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (ClassNotFoundException e) {
                        //TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                }
                else {
                    data[i] = row.getObject(i + 1); 
                }
            }
//original stuff
//         Object data[] = new Object[cols.length];
//         for (int i = 0; i < data.length; i++) {
//             data[i] = row.getObject(i + 1);
//         }
            classList.add(data);
        }

        return classList;
    }

//The problem:

java.io.StreamCorruptedException: invalid stream header: 626F6775
    at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
    at java.io.ObjectInputStream.<init>(Unknown Source)
    at school.cs321.mjla.util.DBHelper.resultSetToTableModel(DBHelper.java:533)
    at school.cs321.mjla.util.DBHelper.getTQuizList(DBHelper.java:445)
    at school.cs321.mjla.controlpanel.ControlPanelModel.<init>(ControlPanelModel.java:46)
    at school.cs321.mjla.mediator.Mediator.startControlPanel(Mediator.java:97)
    at school.cs321.mjla.mainview.MainViewController.controlPanelbutton(MainViewController.java:55)
    at school.cs321.mjla.mainview.MainView$6.actionPerformed(MainView.java:169)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

InformationsquelleAutor prolink007 | 2011-10-20

Schreibe einen Kommentar