Exemplo n.º 1
0
  /**
   * 保存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();
    }
  }