Не удается вставить значение NULL в столбец автоинкремента PrimaryKey

1

Я создал таблицу Items в базе данных С# как свойство первичного ключа AutoIncrement = True, AutoIncrementStep = 1, Unique = True, AutoIncrementSeeds = 0;

CREATE TABLE [dbo].[Items] 
(
    [item_id]       INT          NOT NULL,
    [item_name]     VARCHAR (50) NULL,
    [item_model]    VARCHAR (50) NULL,
    [item_price]    VARCHAR (50) NULL,
    [item_quantity] VARCHAR (50) NULL,
    [entry_date]    VARCHAR (50) NULL,
    [user_id]       VARCHAR (50) NULL,

    PRIMARY KEY CLUSTERED ([item_id] ASC)
);

и я вставляю данные в таблицу Items используя этот код:

string query = @"Insert into Items(item_name, item_model, item_price, item_quantity, entry_date, user_id)" +
                "VALUES(@name, @model, @price, @quantity, @date, @user)";

using (SqlConnection c = new SqlConnection(Properties.Settings.Default.Database1ConnectionString))
{
    try
    {
        c.Open();

        if (c.State == ConnectionState.Open)
        {
            SqlCommand command1 = new SqlCommand(query, c);

            command1.Parameters.AddWithValue("@name", name.Text.ToString());
            command1.Parameters.AddWithValue("@model", model.Text.ToString());
            command1.Parameters.AddWithValue("@price", price.Text.ToString());
            command1.Parameters.AddWithValue("@quantity", quantity.Text.ToString());
            command1.Parameters.AddWithValue("@date", dateTimePicker1.Text.ToString());
            command1.Parameters.AddWithValue("@user", added_by.Text.ToString());

            int k = command1.ExecuteNonQuery();

            if (k > 0)
            {
                MessageBox.Show("Data Added Successfully");
                c.Close();
                return;
            }
            else 
            {
                MessageBox.Show("Data was not added successfully - try again later");
                c.Close();
                return;
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Failed To Open Connection :." + ex);
        return;
    }
}

Когда я запускаю код и пытаюсь вставить данные, я получаю ошибку

Невозможно вставить значение NULL в столбец "item_id"

  • 0
    @Dan Дан Гузман - SQL Server MVP Я надеюсь, вы можете помочь :)
  • 0
    Мне любопытно узнать, как вы определили, что Автоинкремент является правдой. (Кстати, это называется IDENTITY в SqlServer)
Теги:
sql-server
primary-key

1 ответ

4
Лучший ответ

NOT NULL означает, что вы не можете вставить NULL в те столбцы, которые вам нужно явно вставить.

Установка IDENTITY(1,1) будет автоматически вставлять item_id помощью семени 1.

Измените свое определение следующим образом

CREATE TABLE [dbo].[Items] (
[item_id]       INT          NOT NULL IDENTITY(1, 1),
[item_name]     VARCHAR (50) NULL,
[item_model]    VARCHAR (50) NULL,
[item_price]    VARCHAR (50) NULL,
[item_quantity] VARCHAR (50) NULL,
[entry_date]    VARCHAR (50) NULL,
[user_id]       VARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([item_id] ASC)
);

ИЛИ

явно вставить его в базу данных

string query = @"Insert into Items(item_id,item_name,item_model,item_price,item_quantity,entry_date,user_id)" +
                "VALUES(@item_id,@name, @model, @price, @quantity, @date,@user)";

Прекратить использование .AddWithValues Source

  • 0
    спасибо дорогой это работает :)
  • 0
    @YounasBangash Добро пожаловать
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню