如何在帮助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(); } }
如何将列“id”属性设置为自动增量?
Table newTable = new TableBuilder("diagnosis"). addColumn(new ColumnBuilder("id") .setSQLType(Types.INTEGER) .toColumn()) .addColumn(new ColumnBuilder("name") .setSQLType(Types.VARCHAR) .toColumn()).toTable(db);
问问题
1635 次
2 回答
3
如果您的 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();
}
而您自己的答案表明您已经想出了如何使列自动递增。
于 2012-02-21T03:14:53.700 回答
1
对于将自动增量设置为列:
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);
于 2012-02-19T20:10:02.240 回答