【发布时间】:2015-12-01 17:06:43
【问题描述】:
我在尝试使用以下代码将新闻行插入数据库表时遇到完整性约束违规错误。
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”标识的唯一或主键约束或唯一索引中出现重复键值。
我该如何解决这个问题?
【问题讨论】:
-
如果您可以发布数据库表的方案会有点帮助。但是异常本身已经告诉您,您尝试将一个值作为已经存在的主键(或至少插入到唯一列)中插入数据库。因此,您还应该检查从中读取值的文件的内容。