Привет, я столкнулся с проблемой, которую не могу решить. Я делаю свой проект Java и создал Jtable для отображения значений из моей базы данных. В одном из столбцов таблицы я устанавливаю все его значения на «ожидающие», и у меня также есть кнопка с именем dispatchButton, которая, когда я нажимаю эту кнопку, я хочу изменить значение одной из строк с «ожидающих» на «отправка». что я не могу заставить его работать должным образом. та же строка, что и новая запись в Jtable. Вдобавок, даже когда значение одной из строк сейчас «отправлено», когда я перезапускаю свое приложение, это значение теперь снова изменяется на «ожидает» вместо «отправлено» снова. Ниже приведен соответствующий код, который я включил для вашей информации и тестирования. Скажите мне, что мне нужно изменить в моем коде, чтобы заставить его работать, большое вам спасибо.
(Примечание: я не создавал столбец «статус» в базе данных, я устанавливаю только значение "статуса", который находится в JTable)
public mainpage() {
initComponents();
table_update();
status_values();
//status_dispatched();
}
Connection con1;
PreparedStatement pst;
private void DispatchButtonActionPerformed(java.awt.event.ActionEvent evt) {
String type = txttype.getSelectedItem().toString();
String name = txtname.getText();
String quantity = txtquantity.getText();
try {
//String query = "INSERT INTO `request`(`id`, `itemtype`, `itemname`, `quantity`) VALUES (?, ?, ?, ?)";
Class.forName("com.mysql.jdbc.Driver");
con1 = DriverManager.getConnection("jdbc:mysql://localhost/request", "root", "password");
pst = con1.prepareStatement("insert into request (itemtype,itemname,quantity) values(?,?,?)");
pst.setString(1, type);
pst.setString(2, name);
pst.setString(3, quantity);
pst.executeUpdate();
JOptionPane.showMessageDialog(null, "Item has been dispatched");
// To update the newly recorded data to the table
table_update();
// To ensure that all records are still pending
status_values();
// Display dispatched on the row
status_dispatched();
// Set the textfields to empty upon button click
txttype.setSelectedIndex(-1);
txtname.setText("");
txtquantity.setText("");
txttype.requestFocus();
} catch (ClassNotFoundException ex) {
Logger.getLogger(mainpage.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(mainpage.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void table_update(){
try {
int c;
try {
Class.forName("com.mysql.jdbc.Driver");
con1 = DriverManager.getConnection("jdbc:mysql://localhost/request", "root", "password");
pst = con1.prepareStatement("select * from request");
ResultSet rs = pst.executeQuery();
ResultSetMetaData rsd = rs.getMetaData();
c = rsd.getColumnCount();
DefaultTableModel model = (DefaultTableModel)DispatchTable.getModel();
model.setRowCount(0);
while(rs.next()){
Vector v2 = new Vector();
for(int i=1; i<=c; i++){
v2.add(rs.getString("id"));
v2.add(rs.getString("itemtype"));
v2.add(rs.getString("itemname"));
v2.add(rs.getString("quantity"));
}
model.addRow(v2);
}
} catch (ClassNotFoundException ex) {
Logger.getLogger(mainpage.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (SQLException ex) {
Logger.getLogger(mainpage.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void status_values(){
// Set all Status rows to pending
for(int row = 0; row<DispatchTable.getRowCount(); row++){
DispatchTable.setValueAt("Pending", row, DispatchTable.getColumn("Status").getModelIndex());
}
}
private void status_dispatched(){
// Upon the click of the Dispatch button, the status of that row should be dispatched
String dispatch_row = txtdispatch.getText();
int convert_dispatch_row = Integer.parseInt(dispatch_row);
DispatchTable.setValueAt("Dispatched", (convert_dispatch_row)-1, DispatchTable.getColumn("Status").getModelIndex());
}