正如标题所述,我正在尝试编辑现有(本地)MySQL服务器中的字段。 添加和删除行就像魅力一样,但当我尝试使用此代码编辑它们时:
private void EditActionPerformed(java.awt.event.ActionEvent evt) {
try{
String edit1 = lNaam.getText();
String edit2 = lEmail.getText();
String edit3 = lAdres.getText();
String edit4 = lPlaats.getText();
String edit5 = lPostcode.getText();
String edit6 = lTelefoon.getText();
String edit7 = lBedrijfsNaam.getText();
String sql="update customers set naam='"+edit1+"',email='"+edit2+"',adres='"+edit3+"',plaats='"+edit4+"',postcode='"+edit5+"',telefoon='"+edit6+"',bedrijfsnaam='"+edit7+"'where KL_NR";
preparedStatement=connect.prepareStatement(sql);
preparedStatement.execute();
JOptionPane.showMessageDialog(null, "Updated");
}catch(SQLException | HeadlessException e){
JOptionPane.showMessageDialog(null, e);
}
Update_table();
}
编辑:我忘了这么说,KL_NR字段是一个AUTO_INCREMENT字段,支持同样的东西,我没有想法把它放在哪里
它不断编辑表格中的所有行,而不仅仅是1。
此代码用于选择行,删除等:
private void Table_customerMouseReleased(java.awt.event.MouseEvent evt) {
try{
int row = Table_customer.getSelectedRow();
String TClick = (Table_customer.getModel().getValueAt(row, 0).toString());
String sql="select * from customers where KL_NR='"+TClick+"'";
preparedStatement=connect.prepareStatement(sql);
resultSet=preparedStatement.executeQuery();
if(resultSet.next()){
String add1 =resultSet.getString("naam");
lNaam.setText(add1);
String add2 =resultSet.getString("Email");
lEmail.setText(add2);
String add3 =resultSet.getString("Adres");
lAdres.setText(add3);
String add4 =resultSet.getString("Plaats");
lPlaats.setText(add4);
String add5 =resultSet.getString("Postcode");
lPostcode.setText(add5);
String add6 =resultSet.getString("Telefoon");
lTelefoon.setText(add6);
String add7 =resultSet.getString("Bedrijfsnaam");
lBedrijfsNaam.setText(add7);
}
}catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
这是我的删除代码:
private void DeleteActionPerformed(java.awt.event.ActionEvent evt) {
String sql ="delete from test.customers where NAAM=? ";
try {
// TODO add your handling code here:
preparedStatement = connect.prepareStatement(sql);
preparedStatement.setString(1, lNaam.getText());
preparedStatement.executeUpdate();
JOptionPane.showMessageDialog(null, "Deleted");
} catch (SQLException ex) {
Logger.getLogger(DataView.class.getName()).log(Level.SEVERE, null, ex);
}
Update_table();
}
我希望你能帮助我。 :S
答案 0 :(得分:3)
更新你应该调用executeUpdate方法
String sql="update customers set naam='"+edit1+"',email='"+edit2+"',adres='"+edit3+"',plaats='"+edit4+"',postcode='"+edit5+"',telefoon='"+edit6+"',bedrijfsnaam='"+edit7+"'where KL_NR";
preparedStatement=connect.prepareStatement(sql);
preparedStatement.executeUpdate();
并且你的sql字符串不完整意味着你必须完成条件 更新表集名称='test',其中ID = 5;
这不是使用PreparedStatement的正确方法。
使用这种方式
String sql="update customers set naam=?,email=?....."
preparedStatement=connect.prepareStatement(sql);
preparedStatement.setString(1,edit1);
preparedStatement.setString(2,edit2);
preparedStatement.executeUpdate();
答案 1 :(得分:0)
您未在WHERE
,
String sql="update customers set naam='"+edit1+"',email='"+edit2+"',adres='"+edit3+"',plaats='"+edit4+"',postcode='"+edit5+"',telefoon='"+edit6+"',bedrijfsnaam='"+edit7+"'where KL_NR";
应以
之类的结尾..."+edit7+"'where /* CONDITION HERE TO UPDATE THE WANTED ROW*/;
如果选择的条件有效,请使用相同的更新,除非有除选定行之外的其他条件以了解要更新的内容。
int row = Table_customer.getSelectedRow();
String TClick = (Table_customer.getModel().getValueAt(row, 0).toString())
String sql="update customers set naam='"+edit1+"',email='"+edit2+"',adres='"+edit3+"',plaats='"+edit4+"',postcode='"+edit5+"',telefoon='"+edit6+"',bedrijfsnaam='"+edit7+"'where KL_NR='"+TClick+"'";
答案 2 :(得分:0)
你的Update语句必须像这样
String sql="update customers set naam='"+edit1+"',email='"+edit2+"',adres='"+edit3+"',plaats='"+edit4+"',postcode='"+edit5+"',telefoon='"+edit6+"',bedrijfsnaam='"+edit7+"'where KL_NR="+/*some value*/;