1
  1. How delete row from table with help jackcess? I try so, but it's bad:

        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. How set column "id" attribute to autoincrement?

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

4

2 に答える 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 に答える