удалите строку и установите автоинкрементный столбец - PullRequest
1 голос
/ 18 февраля 2012
  1. Как удалить строку из таблицы с помощью jackcess?Я пытаюсь, но это плохо:

        Table ptabl = db.getTable("person");
        int pcount = ptabl.getRowCount();
        for (int i = 0; i < pcount; i++) {
            Map<String, Object> row2 = ptabl.getNextRow();
            if (row2.get("id") == Integer.valueOf(1)) {
                ptabl.deleteCurrentRow();
            }
        }
    
  2. Как установить атрибут "id" столбца в автоинкремент?

    Table newTable = new TableBuilder("diagnosis"). addColumn(new ColumnBuilder("id") .setSQLType(Types.INTEGER) .toColumn()) .addColumn(new ColumnBuilder("name") .setSQLType(Types.VARCHAR) .toColumn()).toTable(db);

Ответы [ 2 ]

3 голосов
/ 21 февраля 2012

Если ваш столбец id проиндексирован, вы можете использовать IndexCursor для быстрого поиска столбцов:

IndexCursor cursor = new CursorBuilder(ptabl).setIndexByColumnNames("id").toIndexCursor();
if(cursor.findFirstRowByEntry(1)) {
  cursor.deleteCurrentRow();
}

Если ваш столбец идентификатора не проиндексирован, вы можете использовать обычный курсор, который более удобен, но фактически не быстрее, чем ваш текущий код (просто выполняет сканирование таблицы):

Cursor cursor = new CursorBuilder(ptab1).toCursor();
Column idCol = ptab1.getColumn("id");
if(cursor.findFirstRow(idCol, 1)) {
  cursor.deleteCurrentRow();
}

А ваш собственный ответ показывает, что вы уже выяснили, как сделать автоинкремент столбца.

1 голос
/ 20 февраля 2012

Для установки автоинкремента на столбец:

Table newTable = new TableBuilder("diagnosis").addColumn(new ColumnBuilder("id").setAutoNumber(true).setSQLType(Types.INTEGER).toColumn()).addColumn(new ColumnBuilder("name").setSQLType(Types.VARCHAR).toColumn()).toTable(db);
...