Автоинкремент SQL INSERT-запроса? - PullRequest
1 голос
/ 18 октября 2011

Я подключен к базе данных SQL Server Compact Edition.Одна из задействованных таблиц имеет 3 столбца - CompanyID, CompanyName и CompanyNotes.Я создал форму в Visual Basic, чтобы добавить новую компанию в базу данных, и, конечно, я не хочу, чтобы пользователь вручную вводил идентификатор компании.

В dataset.xsd, который я имеюсоздал SQL-запрос INSERT, который просто вставляет новую строку с CompanyID, CompanyName и CompanyNotes.Я установил для CompanyID автоматическое увеличение.Однако, когда я попытался вставить имя и заметки, это не понравилось, потому что я установил поле идентификатора как обязательное.Как мне вставить новые данные компании в новую строку с новым идентификатором?

Самый базовый код, который я сейчас использую для добавления новой компании:

Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click
    Me.CompanyTableAdapter1.AddCompany(??????????, txtCompanyName.Text, txtCompanyNotes.Text)
    Me.Close()
End Sub

Что мне вместо этого поставитьиз «?????», или я должен делать что-то совершенно другое?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 18 октября 2011

Просто опустите поле ID в вашем запросе SQL.

INSERT INTO company (CompanyName, CompanyNotes) VALUES (?, ?)

Тогда ваш метод можно упростить, удалив параметр ID:

Me.CompanyTableAdapter1.AddCompany(txtCompanyName.Text, txtCompanyNotes.Text)
0 голосов
/ 18 октября 2011

Это должно быть сделано на уровне базы данных с автоматическим увеличением идентификатора спецификации:

ALTER TABLE TableName ALTER COLUMN ColumnName IDENTITY (/*seed*/1, /*increment*/1)

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

...