2014-12-13 2 views
1

Я создал таблицу Items в базе данных C#, так как свойство первичного ключа - AutoIncrement = True, AutoIncrementStep = 1, Unique = True, AutoIncrementSeeds = 0;Невозможно вставить значение NULL в Auto Increment PrimaryKey Column

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 Guzman - MVP MVC Надеюсь, вы сможете помочь :) –

+0

Мне любопытно узнать, как вы определили, что AutoIncrement является истинным. (Кстати, это называется IDENTITY в SqlServer) – Steve

ответ

4

NOT NULL me и вы не можете вставить 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 Ваше приветствие –

+0

еще одно, что он успешно добавляет данные, но когда я закрываю приложение C#, чем все данные, которые я сохраняю в базе данных, он ушел средняя база данных пуста, я также проверяю данные щелчком правой кнопкой мыши на таблице, а затем нажимаю на показ данных, что таблица пуста. –

Смежные вопросы