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