Как вставить параметр со значением из базы данных. У меня есть поле, и я должен вставить значение из этой базы данных + 1 (плюс плюс один)
Например
myCommand.CommandText =
"INSERT INTO GAMES (GAME_NR, GAME_PLAYER_ID, GAME_NRONTABLE, GAME_ROLE_ID) " &
" VALUES (@game_nr, @game_player_id, @game_nrontable, @game_role_id)"
'Example
myCommand.Parameters.Add("@game_nr", SqlDbType.Int).Value = **"(SELECT MAX(GAME_NR) FROM GAMES)" + 1**
Вам не нужен параметр, вы можете попробовать следующий код.
myCommand.CommandText =
"INSERT INTO GAMES (GAME_NR, GAME_PLAYER_ID, GAME_NRONTABLE, GAME_ROLE_ID) " &
" VALUES ((SELECT MAX(GAME_NR) + 1 FROM GAMES), @game_player_id, @game_nrontable, @game_role_id)"
Но он выглядит как первичный ключ таблицы. Если Game_Nr является pr, вы должны использовать auto-inc. то вам не нужен этот параметр.
Это будет.
myCommand.CommandText =
"INSERT INTO GAMES (GAME_PLAYER_ID, GAME_NRONTABLE, GAME_ROLE_ID) " &
" VALUES (@game_player_id, @game_nrontable, @game_role_id)"
Вы этого не сделаете. Вы делаете GAME_NR
и автоматически увеличивающийся первичный ключ:
create table games (
game_nr int auto_increment primary key,
. . .
);
Затем вы вставляете как:
INSERT INTO GAMES (GAME_PLAYER_ID, GAME_NRONTABLE, GAME_ROLE_ID)
VALUES (@game_player_id, @game_nrontable, @game_role_id);
Пусть база данных выполнит эту работу.
MAX(GAME_NR) = 100
. Тогда вы и я запускаемINSERT
вы предлагаете, и для нас обоихMAX + 1 = 101
. ЕслиGAME_NR
был первичным ключом ... хм?