1

Hi i am trying to read an ArrayList of Integer and get EOFException.

i have a ArrayList of Question which is serialized and i do the same thing for reading it no problem, but with ArrayList Integer dont work.

i write the two ArrayList like so: (im ommiting all the other fields that are not relevant)

    String sqlQuery = "insert into test values (?,?,?,?,?,?,?,?,?)";
    
            PreparedStatement pst = null;
            try {
    
                if (DBConnector.myConn != null) {
                    pst = DBConnector.myConn.prepareStatement(sqlQuery);
    
                    // serialize object
                    Blob questionsBlob = DBConnector.myConn.createBlob();
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    ObjectOutputStream oos = new ObjectOutputStream(baos);
                    oos.writeObject(t.getQuestions());
                    oos.close();
    
                    Blob pointsBlob = DBConnector.myConn.createBlob();
                    ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
                    ObjectOutputStream oos2 = new ObjectOutputStream(baos2);
                    oos.writeObject(t.getPointsPerQuestion());
                    oos2.close();
    
                    // store in byte array
                    byte[] questionsAsByte = baos.toByteArray();
                    byte[] pointsAsByte = baos2.toByteArray();
    
                    // fill blob object with byte array
                    questionsBlob.setBytes(1, questionsAsByte);
                    pointsBlob.setBytes(1, pointsAsByte);
                    pst.setBlob(3, questionsBlob);
                    pst.setBlob(4, pointsBlob);
                    pst.executeUpdate();

and read the objects:

String sqlQuery = "select * from test where teacherUsername = \"" + username + "\";";
        ArrayList<Test> arr = new ArrayList<Test>();
        ArrayList<Question> questions;
        ArrayList<Integer> points;
        try {
            if (DBConnector.myConn != null) {
                Statement st = DBConnector.myConn.createStatement();
                ResultSet rs = st.executeQuery(sqlQuery);
                while (rs.next()) {
                    questions = new ArrayList<>();
                    points = new ArrayList<>();
                    
                    Blob questionsBlob = rs.getBlob(3);
                    BufferedInputStream bis = new BufferedInputStream(questionsBlob.getBinaryStream());
                    ObjectInputStream ois = new ObjectInputStream(bis);
                    questions = (ArrayList<Question>) ois.readObject();
                    System.out.println(questions);
                    
                    Blob qPointsBlob = rs.getBlob(4);
                    BufferedInputStream bis1 = new BufferedInputStream(qPointsBlob.getBinaryStream());
                    ObjectInputStream ois1 = new ObjectInputStream(bis1);
                    try {
                    points = (ArrayList<Integer>) ois1.readObject(); // PROBLEM HERE
                    }catch(EOFException e) {
                        System.out.println(points);
                        
                    }

when i try to read the data - it works with the ArrayList of Question and really shows me the questions, but with the ArrayList of Integer it gives me the EOFException. any ideas ?

Din Salman
  • 11
  • 2

0 Answers0