當使用下面的代碼嘗試向數據庫表中插入新聞行時,我得到了完整性約束違規錯誤。SQLIntegrityConstraintViolationException由於重複鍵值
public void ExtractBoard() throws IOException, SQLException {
int rows = 0;
String sqlInser = "INSERT INTO APP.SUBSCRIBERBR (subID, boardno)"+"VALUES (?,?)";
PreparedStatement stmt = conn.prepareStatement(sqlInser, Statement.RETURN_GENERATED_KEYS);
String[] AryFiles2 = rf.OpenFile();
int i,j;
String p1 = "", p2 = "";
for (i=0; i<AryFiles2.length; i++) {
if (AryFiles2[i].contains("ADD VSBR")) {
String[][] parts = this.LineParts();
Scanner in = new Scanner(parts[i][0]).useDelimiter("[^0-9]+");
int intst = in.nextInt();
p1 = String.valueOf(intst);
for (j=0; j<parts[1].length; j++) {
if (parts[i][j].contains("MN")) {
Scanner inn = new Scanner(parts[i][j]).useDelimiter("[^0-9]+");
int intstr = inn.nextInt();
p2 = String.valueOf(intstr);
}
}
}
if(p1 != null && p2 != null){
stmt.setString(1, p1);
stmt.setString(2,p2);
rows = stmt.executeUpdate();
}
else {
throw new SQLException("Null parameters");
}
}
}
這是我收到的錯誤消息。
java.sql.SQLIntegrityConstraintViolationException:語句被放棄,因爲它會造成一個獨特的或主鍵約束或通過在「SUBSCRIBERBR」定義「SQL150827011836400」標識的唯一索引中的重複的鍵值。
我該如何解決這個問題?
這將是一個有點幫助,如果你可以發佈數據庫表的方案。但是,異常本身已經告訴你,你試圖將一個值作爲主鍵(或者至少是一個唯一的列)插入到數據庫中,該值已經存在。所以您還應該檢查您從中讀取值的文件的內容。 – sleepy42