jaccess删除行并设置自动递增列


  1. 如何使用帮助从表中删除行?我试过了,但很糟糕:

        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);

如果您的id列被索引,您可以使用IndexCursor快速查找列:

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

如果你的id列没有索引,你可以使用一个普通的光标,这更方便,但实际上并不比你当前的代码快(只需要扫描一个表):

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

你自己的答案表明你已经找到了如何使列自动递增的方法。

对于将自动增量设置为列:

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);

相关内容

  • 没有找到相关文章

最新更新