【发布时间】:2020-02-13 04:04:03
【问题描述】:
我正在尝试在我的 JAVA 代码上更新数据库的值,但是当我尝试这样做时,它告诉我“主键的重复条目 (nameOfSomething)”;即使 PK 不存在,也会给我这个错误,我不知道为什么。欢迎所有帮助;如果需要更多代码,我很乐意添加它。提前致谢。
/**
SO THE NEW ERROR WOULD BE ON THE IF/ELSE STATEMENT, WHICH IS TRHOWING THE ELSE, THAT SAYS "DATA WAS NOT UPDATED".
*/
JButton btnUpdate = new JButton("Update");
btnUpdate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String petname = txtName.getText();
String petphoto = txtPhoto.getText();
String pettype = txtType.getText();
String color = txtColor.getText();
int gender = Integer.parseInt(txtGender.getText());
int isSterilized = Integer.parseInt(txtSterilized.getText());
//DATE
String pedigree = txtPedigree.getText();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String date_entry = df.format(datePicker.getDate());
//END
String vaccine1 = txtVaccine1.getText();
String vaccine2 = txtVaccine2.getText();
String vaccine3 = txtVaccine3.getText();
Connection conn = null;
PreparedStatement pstmt = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/refugio","root","2797");
pstmt = conn.prepareStatement("UPDATE PETS SET PETPHOTO=?, PETTYPE=?, COLOR=?,GENDER=?,ISSTERILIZED=?,PEDIGREE=?,DATE_ENTRY=?,"
+ "VACCINE1=?,VACCINE2=?,VACCINE3=? WHERE PETNAME=?"); //NEW CHANGE HERE
pstmt.setString(1, petname);
pstmt.setString(2, petphoto);
pstmt.setString(3, pettype);
pstmt.setString(4, color);
pstmt.setInt(5, gender);
pstmt.setInt(6, isSterilized);
pstmt.setString(7, pedigree);
pstmt.setString(8, date_entry);
pstmt.setString(9, vaccine1);
pstmt.setString(10, vaccine2);
pstmt.setString(11, vaccine3);
int i = pstmt.executeUpdate();
if(i>0) {
JOptionPane.showMessageDialog(null, "Data was updated");
}else { //NEW ERROR WOULD BE HERE
JOptionPane.showMessageDialog(null, "Data was not updated");
}
}catch(Exception ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
});
btnUpdate.setBounds(48, 737, 356, 51);
contentPane.add(btnUpdate);
/**
DATABASE DESCRIPTION:
petName varchar(15) NO PRI
petPhoto varchar(50) YES
petType varchar(10) NO
color varchar(15) YES
gender tinyint(1) NO
isSterilized tinyint(1) YES
pedigree varchar(15) YES
date_entry timestamp NO
vaccine1 varchar(15) YES
vaccine2 varchar(15) YES
vaccine3 varchar(15) YES
JUST IN CASE PK IS PETNAME.
*/
【问题讨论】:
-
你的桌子怎么样?
-
您正在执行一个
UPDATE语句没有WHERE子句,因此该语句将尝试使用相同的更新所有行价值观。看来您需要返回 SQL 指南并重新阅读教您有关UPDATE语句的章节。
标签: java mysql sql eclipse swing