Как сделать пакетную вставку с автонумерацией в JDBC?

Раньше у меня был некоторый опыт работы с MS Access, а теперь я занимаюсь JDBC, конечно же, на Java. В базах данных MS Access у меня может быть поле AutoNumber, что очень удобно для создания первичных ключей. Я хотел бы сделать то же самое на Java. Однако, покопавшись в SO (и, конечно, в Google) в течение нескольких дней, я могу найти очень удобный способ. Один из них заключается в том, чтобы сначала получить самый большой первичный ключ (скажем, N) в таблице, а затем вставить последнюю запись с ключом (N+1). Это работает, я думаю, но не эффективно. Может ли какой-нибудь ТАКОЙ гений помочь мне?


person Biscuitz    schedule 28.02.2012    source источник
comment
Я думаю, что если вы запускаете свой запрос на вставку через JDBC без указания первичного ключа (который установлен AutoNumber в базе данных), он должен вставить новую запись с автоматически сгенерированным ключом.   -  person JProgrammer    schedule 28.02.2012
comment
Я считаю, что вы хотите вставлять записи, а затем получать сгенерированные ключи, если это ваш случай, я думаю, вы должны игнорировать режим пакетной обработки.   -  person Amir Pashazadeh    schedule 28.02.2012
comment
неудивительно, что никто не отвечает на пару подобных вопросов, я, идиот, скучаю по этому. Спасибо!   -  person Biscuitz    schedule 29.02.2012


Ответы (3)


MySQL имеет аналогичную возможность: автоматическое увеличение. Просто добавьте это в свои ключевые поля, и все готово.

person duffymo    schedule 28.02.2012

Не уверен, на каком бите вы застряли

но в MySql Auto номер есть в принципе.

CREATE TABLE table_name 
( 
   id INTEGER AUTO_INCREMENT PRIMARY KEY ,
   Value INTEGER
) 

Чтобы использовать его из чего-то вроде Java, просто пропустите его в sql, например.

Insert table_name(Value) Values(10)
person Tony Hopkinson    schedule 28.02.2012

На самом деле это не связано с JDBC.

Вы должны создать таблицу в mysql с автоматически увеличивающимся столбцом (взгляните на INTEGER AUTO_INCREMENT PRIMARY KEY для спецификаций столбца).

Затем в JDBC вы просто игнорируете этот столбец при вставке данных (как будто его не существует), и база данных позаботится об этом!

person Marsellus Wallace    schedule 28.02.2012
comment
понятно. Большое Вам спасибо!! - person Biscuitz; 29.02.2012