Я создал таблицу 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"
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