Таблица базы данных не обновляется при появлении запроса - PullRequest
1 голос
/ 01 ноября 2019

Вот еще один вопрос, который я хотел задать некоторое время о той же базе данных «Поселенцы Катана», о которой я спрашивал в своем предыдущем вопросе. На этот раз речь идет об обновлении самой таблицы базы данных.

Мне успешно удалось подключить приложение Java к базе данных Oracle, и в то время как другие таблицы базы данных успешно обновляются по запросу приложения, эта, в частности, делаетне по какой-то причине. Это также не дает ошибок, поэтому я исключаю, что это может быть проблема с подключением или командой SQL.

Вот таблица, которую я хочу обновить:

CREATE TABLE giocatore(
    numero INT,
    colore VARCHAR2(20),
    punto_partenza INT,
    punti_vittoria INT DEFAULT 0,
    vittorioso CHAR(1) DEFAULT 'f',
    quant_clay INT,
    quant_wool INT,
    quant_wheat INT,
    quant_wood INT,
    quant_rock INT,
    CONSTRAINT player_pk PRIMARY KEY(numero)
    );

А вот код приложения Javaв вопросе:

private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
        try{
            String url="jdbc:oracle:thin:@//localhost:1521/orcl";
            OracleDataSource ods = new OracleDataSource();
            ods.setURL(url);
            ods.setUser("LAB_NICK");
            ods.setPassword("10Niroxxe98");
            Connection conn = ods.getConnection();
            String PlayerNumberAsString = playerNum.getSelectedItem().toString();
            int PlayerNumber = Integer.parseInt(PlayerNumberAsString);
            String StartingHexagonNumberAsString = startHex.getSelectedItem().toString();
            int StartingHexagonNumber = Integer.parseInt(StartingHexagonNumberAsString);
            int VictoryPoints = (int) victoryPts.getValue();
            int OwnedAmountOfClay = (int) clayNum.getValue();
            int OwnedAmountOfWood = (int) woodNum.getValue();
            int OwnedAmountOfMinerals = (int) rockNum.getValue();
            int OwnedAmountOfWheat = (int) wheatNum.getValue();
            int OwnedAmountOfWool = (int) woolNum.getValue();
            String PlayerColor = colorChoice.getSelectedItem().toString();
            String IsVictorious;
            if(victoryCheck.isSelected()){
                IsVictorious = "v";
            }else{
                IsVictorious = "f";
            }
            PreparedStatement stmt = conn.prepareStatement("UPDATE giocatore SET punti_vittoria = ?, colore = ?, vittorioso = ?, punto_partenza = ?, quant_clay = ?, quant_wool = ?, quant_wheat = ?, quant_wood = ?, quant_rock = ? WHERE numero = ?");
            stmt.setInt(1, VictoryPoints);
            stmt.setString(2, PlayerColor);
            stmt.setString(3, IsVictorious);
            stmt.setInt(4, StartingHexagonNumber);
            stmt.setInt(5, OwnedAmountOfClay);
            stmt.setInt(6, OwnedAmountOfWool);
            stmt.setInt(7, OwnedAmountOfWheat);
            stmt.setInt(8, OwnedAmountOfWood);
            stmt.setInt(9, OwnedAmountOfMinerals);
            stmt.setInt(10, PlayerNumber);
            stmt.close();
            conn.close();
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, e);
        }
    }

Я также хотел бы знать, как обновить JTable, но это вопрос в другой раз. Спасибо за ваше понимание.

РЕДАКТИРОВАТЬ: Код, который я разместил ранее, полностью работал. Вот код, о котором я на самом деле спрашивал. Мне очень жаль за это большое неудобство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...