/** * 保存Table数据,并指定列范围 * * @param conn * @param table * @param tableName 数据库表名 * @param columns 列范围 * @throws SQLException */ public static void saveData( Connection conn, Table table, String tableName, Collection<String> columns) throws SQLException { if (columns == null) { columns = new ArrayList<String>(); columns.addAll(table.getColumnNames()); } String idColumn = table.getIDColumn(); PreparedStatement newStat = conn.prepareStatement(createNewSQL(table, tableName, columns)); try { for (Row row : table.getRows(RowState.NEW)) { int i = 1; for (String column : columns) { newStat.setObject(i, row.getValue(column)); i++; } newStat.execute(); } } finally { newStat.close(); } PreparedStatement editStat = conn.prepareStatement(createUpdateSQL(table, tableName, columns)); try { for (Row row : table.getRows(RowState.EDIT)) { int i = 1; for (String column : columns) { editStat.setObject(i, row.getValue(column)); i++; } editStat.setObject( columns.size() + 1, row.isChanged(idColumn) ? row.getOldValue(table.getIDColumn()) : row.getValue(idColumn)); editStat.execute(); } } finally { editStat.close(); } PreparedStatement deleteStat = conn.prepareStatement(createDeleteSQL(table, tableName)); try { for (Row row : table.getRows(RowState.DELETE)) { deleteStat.setObject( 1, row.isChanged(idColumn) ? row.getOldValue(table.getIDColumn()) : row.getValue(idColumn)); deleteStat.execute(); } } finally { deleteStat.close(); } }