このように作成されたjackcessテーブルに行を挿入したいと思います。
Table t = Database.open(new File(dbUrl)).getTable(tname);
通常、SQL を使用している場合は、この時点でソートするのが適切です。それでも、私はドキュメントを見てきましたが、何も見つかりませんでした。
とにかく、テーブルを取得した後、次を使用して行を挿入してみます。
int id = t.getRowCount() + 1;
try {
t.addRow(id, "MyName", "MyLastName");
} catch (IOException ex) {
ex.printStackTrace();
}
しかし、インデックスがソートされていないため、次の例外が発生します。
java.io.IOException: New row [250, MyName, MyLastName, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] violates uniqueness constraint for index
Data number: 5
Page number: 99
Is Backing Primary Key: true
Is Unique: true
Ignore Nulls: false
Columns: [ColumnDescriptor Name: (CLIENTES) ID_CLIENTE
Type: 0x4 (LONG)
Number: 0
Length: 4
Variable length: false flags: 1]
Initialized: true
EntryCount: 249
Cache:
LeafDataPage[99] 0, 0, (0), [RowId = 93:0, Bytes = 7F 80 00 00 00 , RowId = 6844:0, Bytes = 7F 80 00 01 5C]
at com.healthmarketscience.jackcess.IndexData.addEntry(IndexData.java:571)
at com.healthmarketscience.jackcess.IndexData.addRow(IndexData.java:537)
...
さて、他の列がなくて失敗したのではないかと思いましたが、使ってみたら
t.getRowCount() + 100;
挿入できました。したがって、私の問題は明らかに、インデックスまたはソートされたテーブルを取得する方法がわからないことです。
明らかに、行を数えることはお粗末な解決策です。とにかくやってみただけです。