Я хочу вставить строку в таблицу 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;
и смог вставить. Итак, моя проблема явно в том, что я понятия не имею, как получить индекс или отсортированную таблицу.
Очевидно, что подсчет строк — паршивое решение. Я только что попробовал это в любом случае.