Вот еще один вопрос, который я хотел задать некоторое время о той же базе данных «Поселенцы Катана», о которой я спрашивал в своем предыдущем вопросе. На этот раз речь идет об обновлении самой таблицы базы данных.
Мне успешно удалось подключить приложение 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, но это вопрос в другой раз. Спасибо за ваше понимание.
РЕДАКТИРОВАТЬ: Код, который я разместил ранее, полностью работал. Вот код, о котором я на самом деле спрашивал. Мне очень жаль за это большое неудобство.