更新我的MS Access數據庫我有這樣的代碼使用ucanaccess更新我的MS Access數據庫。我的代碼的作品發現,如果我更新我的數據庫的第一行,但問題是,如果我更新第二行直到最後一行此錯誤出現。使用ucanaccess連接
「net.ucanaccess.jdbc.UcanaccessSQLException:完整性約束衝突:唯一約束或索引違反; SYS_PK_10339表:EMPLOYEETABLE2」
我懷疑我在做我的MS錯誤訪問設置,我的主鍵是員工姓名及其數據類型是文本。
public void actionPerformed(ActionEvent e)
{
String employeeName = endrollNameFields.getText();
String employeeAddress = endrollAddressFields.getText();
String employeeStatus = endrollEmployeestatusFields.getText();
String employeeDateOfMembership = dateOfMembershipFields.getText();
String employeeAge = ageFields.getText();
String employeMStatus = maritalstatusFields.getText();
String employeeBloodType = bloodTypeFields.getText();
String employeeGender = genderFields.getText();
String beginningCapital = beginningCapitalFields.getText();
String grossSalary = grossSalaryFields.getText();
String salaryDeductions = salaryDeductionFields.getText();
String netSalary = netSalaryFields.getText();
try
{
//------------CREATE CONNECTION TO DATA BASE--------------/
String DBPAD = "sourceFolder/employeeTable2.mdb";
String DB = "jdbc:ucanaccess://" + DBPAD;
con = DriverManager.getConnection(DB);
st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql = "Select * FROM employeeTable2";
rs = st.executeQuery(sql);
if (rs != null)
while (rs.next())
{
rs.updateString("Employee Name", employeeName);
rs.updateString("Employee Age", employeeAge);
rs.updateString("Employee Address", employeeAddress);
rs.updateString("Employee Marital Status", employeMStatus);
rs.updateString("Employee Date of Membership", employeeDateOfMembership);
rs.updateString("Employee Blood Type", employeeBloodType);
rs.updateString("Employee Status", employeeStatus);
rs.updateString("Employee Gender", employeeGender);
rs.updateString("Beginning Capital", beginningCapital);
rs.updateString("Gross Salary", grossSalary);
rs.updateString("Salary Deductions", salaryDeductions);
rs.updateString("Net Salary", netSalary);
rs.updateRow();
}
st.close();
st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql1 = "select * from employeeTable2";
rs = st.executeQuery(sql1);
JOptionPane.showMessageDialog(null, "<html>" + "<font color=\"#008000\">" + "<html><span style='font-size:1.5em'>Update to Data Base is Successful");
endrollNameFields.setText(" ");
endrollAddressFields.setText(" ");
endrollEmployeestatusFields.setText(" ");
dateOfMembershipFields.setText(" ");
ageFields.setText(" ");
maritalstatusFields.setText(" ");
genderFields.setText(" ");
bloodTypeFields.setText(" ");
beginningCapitalFields.setText(" ");
grossSalaryFields.setText(" ");
salaryDeductionFields.setText(" ");
netSalaryFields.setText(" ");
}
catch(Exception e1)
{
JOptionPane.showMessageDialog(null, e1);
}
}
});
你試圖修改主鍵列「Employee Name」,這會導致重複。這是因爲你選擇了'employeeTable2'中的所有行並試圖將它們全部更新爲相同的值 – MadProgrammer
與論壇網站不同,我們不使用「謝謝」或「任何幫助表示讚賞」或簽名在[so]上。請參閱「[應該'嗨','謝謝',標語和致敬從帖子中刪除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed - 從 - 個)。 –
歐凱先生得到了它。 –