2014-11-10 2 views
0

У меня есть соединение с базой данных, где я вставляю данные в таблицу, имеющую 2 столбца, то есть id, first_name, last_name. Ниже приводится код:Внести запись в таблицу с ошибкой каждый раз

private void Insert_Click(object sender, EventArgs e) 
    { 
     try 
     { 

      String query = "INSERT INTO data_table (first_name,last_name) VALUES (@f_name,@l_name)"; 

      using (SqlConnection connection1 = new SqlConnection(
             Properties.Settings.Default.DatabaseConnection)) 

      using (SqlCommand insertCommand = new SqlCommand(query, connection1)) 
      { 
       //a shorter syntax to adding parameters 
       // insertCommand.Parameters.Add("@id", SqlDbType.Int).Value = 1; 
       insertCommand.Parameters.Add("@f_name", SqlDbType.NChar).Value = "JAVED"; 

       insertCommand.Parameters.Add("@l_name", SqlDbType.NChar).Value = "GHAMJN"; 

       //make sure you open and close(after executing) the connection 
       connection1.Open(); 
       insertCommand.ExecuteNonQuery(); 
       connection1.Close(); 

       MessageBox.Show("Record inserted. Please check your table data. :)"); 

      } 

     } 
     catch (Exception err) 
     { 

      MessageBox.Show(err.Message); 

     } 
    } 

Ниже T-SQL скрипт:

CREATE TABLE [dbo].[data_table] (
[Id]   INT  NOT NULL IDENTITY, 
[first_name] NCHAR (10) NULL, 
[last_name] NCHAR (10) NULL, 
PRIMARY KEY CLUSTERED ([Id] ASC) 
); 

Проблема создается по идентификатору: Я поставил его автоматическое приращение. Когда я нажимаю кнопку вставить MessageBox выскакивает говоря:

Не удается вставить значение NULL в столбец 'Id', таблица «C: \ Users ....... \ Database1.MDF.dbo.data_table; столбец не позволяет null.INSERT терпит неудачу

+0

попытаться создать таблицу с 'с [Id] INT NOT NULL IDENTITY (1,1)' – Max

+0

STILL одна и та же проблема :-( – Khan

+2

Вы смотрите на неправильную базу данных или таблицу. –

ответ

0

вашего поле Id должно быть изменено, как показано ниже

enter image description here

+0

Я сделал, прежде чем ставить проблему здесь – Khan

+0

Это должно работать, попробуйте с идентификатором Id, чтобы он мог увидеть, работает ли это, обнаружив, что проблема не есть где –

+0

эти имена полей разные – Rob

1

Добавить семенную идентичность и приращение значения в таблицу ...

CREATE TABLE [dbo].[data_table] (
[Id]   INT  NOT NULL IDENTITY(1,1), 
[first_name] NCHAR (10) NULL, 
[last_name] NCHAR (10) NULL, 
PRIMARY KEY CLUSTERED ([Id] ASC) 
); 
+0

STILL та же проблема :-( – Khan

+0

Вы выполнили «ALTER» таблицу? Если вы используете EF try delete table/db ... – Milen

+0

ДА Я только что отредактировал то же самое и не улучшился – Khan

0

попытка this. Поведение столбцов Identity может быть включено или отключено с помощью этого оператора.

Если ваш идентификатор столбца правильно настроен, то это единственное логическое объяснение он не ведет себя, как ожидалось

SET IDENTITY_INSERT [DBO] [data_table] ВКЛ.


Однако, более вероятно, что ваше утверждение правильности испорчено и вы не настроили Идентичность столбец правильно.

+0

Где я должен попробовать? – Khan

0

Удаление этой таблицы Alongwith все старые копии старой таблицы и создать новую таблицу с предложил Identity(1,1) решен вопрос

+0

Это не ответ, к сожалению. Значения семян не нужны для свойства 'IDENTITY', см. Здесь. http://msdn.microsoft.com/en-us/library/ms186775.aspx Это указывает на некоторую неизвестную проблему с вашим предыдущим объектом таблицы. – Jodrell

+0

ДА a Перезапуск VS был достаточным для устранения проблемы. Фактически, в ящике сообщений не было закрыто VS, и это было сделано не по назначению – Khan