【发布时间】:2014-11-26 01:47:49
【问题描述】:
我正在使用 java 和 SQLite 编写一个基于 GUI 的项目。我在我的 SQLite 数据库中创建了一个表并在我的项目中使用它。有几列我将 RoomNo 作为主键并给出了默认值 111。 问题是当我尝试从 jTable 中编辑或更新数据并将其保存到我的数据库时,它会显示异常,java.sql.SQLException:PRYMARY KEY 必须是唯一的。 我找不到它出现的原因。可能问题出在我的代码中。这是代码 f 更新方法。请帮我解决这个问题。
private void updateButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
String value1 = roomNumbertf.getText();
String value2 = detailtf.getText();
String value3 = statustf.getText();
String value4 = billPerDaytf.getText();
String value5 = clientNametf.getText();
String value6 = clientAddresstf.getText();
String value7 = clientMobileNotf.getText();
String value8 = entryDatetf.getText();
String value9 = leavingDatetf.getText();
String sql = "update RoomStatusTable2 set RoomNo='"+value1+"', Details= '"+value2+"', Status='"+value3+"', BillPerDay='"+value4+"',ClientName='"+value5+"', ClientAddress='"+value6+"', ContactNo='"+value7+"', EntryDate='"+value8+"', LeavingDate='"+value9+"'";
pstatement = connection.prepareStatement(sql);
pstatement.execute();
JOptionPane.showMessageDialog(null, "Information Updated");
updateTable();
}catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
// 这是我的 SQLite 表 crate 语句 CREATE TABLE "RoomStatusTable2" ("RoomNo" INTEGER PRIMARY KEY DEFAULT (111) "详细信息" CHAR,"状态" CHAR,"BillPerDay" CHAR,"AdvancedBooking" CHAR,"ClientName" CHAR,"ClientAddress" CHAR,"ContactNo" CHAR,"EntryDate" CHAR,"LeavingDate" CHAR)
如果需要更多信息或代码来了解问题所在,请评论我。
【问题讨论】:
-
Swing 标签被移除,因为问题本身不涉及 Swing。
-
您正在尝试更新主键 (
RoomNo)。您需要确保它与已存储的其他条目不同,否则您将获得此异常