Я использую SQL Server Express и VS2008.Загрузить пустую таблицу базы данных
У меня есть база данных с таблицей A
, которая имеет столбец ID
как IDENTITY
. Идентификатор автоматически увеличивается. Даже если строка удалена, ID
все равно увеличивается.
После нескольких манипуляций данными текущий ID
достиг, например, 15.
При запуске приложения
- , если есть по крайней мере одна строка: если добавить новую строку, новый идентификатор 16. Все в порядке.
- Если таблица пуста (без строки): если я добавляю новую строку, новый идентификатор равен 0, что является ошибкой (я думаю).
И дальнейшее манипулирование данными (например, удаление или обновление) приведет к необработанному исключению.
С кем это столкнулось?
PS. В моем определении таблицы, идентификатор был выбран следующим образом:
Identity Increment = 1; Identity Seed =1;
Код нагрузки БД:
dataSet = gcnew DataSet();
dataAdapter->Fill(dataSet,"A");
dataTable=dataSet->Tables["A"];
dbConnection->Open();
Update метод Кнопка
dataAdapter->Update(dataSet,"tblInFlow");
dataSet->AcceptChanges();
dataTable=dataSet->Tables["tblInFlow"];
dataGrid->DataSource=dataTable;
Если я нажимаю Update :
, если есть хотя бы строка: представление datagrid обновляется и правильно показывает таблицу.
Если в таблице нет ни одной строки данных, метод Add добавит новую строку, но из ID 0. Если я закрою программу и перезагрузите ее снова: идентификатор будет 16, что верный.
Это метод добавить
row=dataTable->NewRow();
row["column1"]="something";
dataTable->Rows->Add(row);
dataAdapter->Update(dataSet,"A");
dataSet->AcceptChanges();
dataTable=dataSet->Tables["A"];
Можете ли вы показать определение таблицы и код, который добавляет новую строку, когда таблица пуста? Похоже, что либо таблица изначально не посеяна правильно, либо вы вручную заново ее высеваете. Если идентификатор должен начинаться с 1, конфигурация должна быть 'IDENTITY (1,1)', и поэтому вы не должны получать 0, если ничего не происходит. Поэтому вам нужно предоставить дополнительную информацию. –
Я думаю, что при объявлении столбца идентификатора u нужно указать значение семени и приращения, например CREATE TABLE dbo.MyTable (ID int identity (1,1), Name varchar (20)) – praveen
Pls посмотрел на мой выше отредактированный вопрос , Спасибо. –