我用Java开发了一个应用程序,可以在其中查看和修改MS SQL表。
public static void insertParts(String tableName, Vector<String> colNames, Vector<Object> data) throws SQLException {
StringBuilder query = new StringBuilder("INSERT INTO " + tableName + " (");
for (int j = 0; j < colNames.size(); j++) {
query.append(colNames.get(j));
if (j != (colNames.size() - 1)) {
query.append(", ");
} else {
query.append(") VALUES(");
}
}
for (int i = 0; i < colNames.size(); i++) {
query.append("?");
if (i != (colNames.size() - 1)) {
query.append(", ");
} else {
query.append(")");
}
}
stmt = ccd_db_connection.getConnection().prepareStatement(query.toString());
for (int j = 0; j < colNames.size(); j++) {
stmt.setObject(j + 1, data.get(j));
}
stmt.execute();
stmt.close();
}
当我将其用于父表或关系表(其中当然已经存在外键)时,它的作用就像魅力。
如果不存在父记录,那么我将得到以下异常:
SQL状态:23000错误代码:547 MESSAGE:INSERT语句冲突 与COLUMN FOREIGN KEY约束'FK_Something'。冲突 发生在数据库“ dbY”,表“ TableX”,列“ ColumnZ”中。
我想要一种方法,以便在发生这种情况时(我想在try catch部分),如果用户想添加父数据,直接将其带到父表或取消整个插入操作,应该得到提示。
由于插入是动态的,有什么方法可以获取父表的引用?
到目前为止,只有“字符串消息”似乎可以向我提供该信息,但我想它有点临时性,但却是一个稳定的解决方案。
任何建议都会很有帮助,因为我被困在这一点上。