Автоматическое увеличение в запросе вставки SQL?

#sql #vb.net #sql-server-ce #increment

#sql #vb.net #sql-server-ce #увеличение

Вопрос:

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

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

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

 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
  

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

Спасибо!

Комментарии:

1. Можете ли вы также опубликовать код, который вы используете для вставки записи в базу данных? Я думаю, это в теле AddCompany метода.

Ответ №1:

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

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

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

 Me.CompanyTableAdapter1.AddCompany(txtCompanyName.Text, txtCompanyNotes.Text)
  

Комментарии:

1. Привет, Марк, спасибо за предложение. Что касается вашего запроса на код вставки, я просто добавил запрос, щелкнув правой кнопкой мыши таблицу «company» в моем представлении dataset.xsd design, выбрав Добавить-> Запрос, а затем с помощью мастера добавьте SQL-запрос: «ВЫБЕРИТЕ [CompanyID], [CompanyName], [CompanyNotes] ИЗ[Компания]» Посмотрите на этот скриншот для того, что я описываю: img1.uploadscreenshot.com/images/orig/10/28916570561-orig.jpg Как мне теперь изменить свой код, учитывая эту новую информацию?

2. @IceQubed: Я думаю, что этот учебник расскажет вам, как: shiningstar.net/aspnet_articles/DataSet/DataSetProject7.aspx . Прочитайте бит, начинающийся с «Создание нашего запроса вставки с параметрами»

3. Это отличный учебник, спасибо. Однако по какой-то причине часть, в которой я могу редактировать идентификатор и т. Д., выделена серым цветом. Есть идеи, почему это может быть? img1.uploadscreenshot.com/images/orig/10/28917173646-orig.jpg

4. @IceQubed: является ли столбец CompanyID переменной, а не целым числом? Это намеренно?

Ответ №2:

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

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

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