Java store sql запрос в объекте - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь сохранить запрос sql в объект, чтобы я мог загрузить / сохранить информацию из этого объекта.

К сожалению, мне кажется, что я что-то упустил ... Но я не знаю, что: D

Когда я выполняю свой код, я получаю сообщение об ошибке:

"java.lang.Integer не может быть приведен к [B» (я ловлю это сообщение в ClassCastException)

Вот чтоЯ делаю:

public static CatalogueClients chargementClient() throws ClassNotFoundException, IOException, SQLException {
    // TODO Auto-generated method stub
    Connection dbConnection = null;
    Statement statement = null;
    CatalogueClients maliste = new CatalogueClients();
    try {
        dbConnection = OpenConnexion.getDBConnection();
        statement = dbConnection.createStatement();
        ResultSet result = statement.executeQuery("SELECT * FROM client");
        while (result.next()) {
            byte[] st = (byte[]) result.getObject(1);
            ByteArrayInputStream bais = new ByteArrayInputStream(st);
            ObjectInputStream ois = new ObjectInputStream(bais);
            maliste = (CatalogueClients) ois.readObject();
            ois.close();
            bais.close();
        }
    } catch (SQLException e) {
        System.out.println(e.getMessage());
    } catch (ClassCastException cce){
        System.out.println(cce.getMessage());
    } finally {
        if (statement != null) {
            statement.close();
        }
        if (dbConnection != null) {
            dbConnection.close();
        }
    }
    return maliste;
}

Вот как выглядят клиенты Catalogue:

public class CatalogueClients extends ArrayList<Client> {
private static CatalogueClients instance;
private static final long serialVersionUID = 1L;
    public String Afficher() {
    return (Input.returnOption("Mes clients: "));
}
    public static CatalogueClients getInstance() throws SQLException {
            if (instance == null) {
            instance = Serialization.chargementClient();
        }
    return instance;
}

Не могли бы вы, ребята, помочь?

Спасибо

1 Ответ

0 голосов
/ 16 ноября 2018

Проверьте тип данных первого столбца в таблице (который возвращается по запросу) и измените код соответствующим образом. Согласно упомянутому сообщению об ошибке ясно, что вы получаете целочисленное значение в качестве значения первого столбца.

List<Client> clients = new ArrayList<>();
Client client=null;
      try {
            dbConnection = OpenConnexion.getDBConnection();
            statement = dbConnection.createStatement();
            ResultSet result = statement.executeQuery("SELECT * FROM client");
            while (result.next()) {
                client = new Client();
                client.setId(result.getInt(1));
                //Map other properties likewise here
               clients.add(client);
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } catch (ClassCastException cce){
            System.out.println(cce.getMessage());
        } finally {
            maliste ==clients; // set list here
            if (statement != null) {
                statement.close();
            }
            if (dbConnection != null) {
                dbConnection.close();
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...