У меня есть соединение с базой данных, где я вставляю данные в таблицу, имеющую 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)
 );

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

Невозможно вставить значение NULL в столбец Id таблицы C: \ Users ....... \ Database1.MDF.dbo.data_table; столбец не допускает null.

0
Khan 10 Ноя 2014 в 13:24
Попробуйте создать таблицу с with [Id] INT NOT NULL IDENTITY(1,1)
 – 
Max
10 Ноя 2014 в 13:27
ВСЕ та же проблема :-(
 – 
Khan
10 Ноя 2014 в 13:36
2
Вы смотрите не на ту базу данных или таблицу.
 – 
ta.speot.is
10 Ноя 2014 в 13:36
1
Убедитесь, что у вас есть только 1 копия базы данных и что база данных, на которую указывает ссылка, — это та, в которую вы внесли изменения. VS пытается быть умным и спрашивает о копировании mdf в вашу локальную папку.
 – 
NoChance
10 Ноя 2014 в 14:17
Согласитесь с другими, ваша точка подключения находится в другом месте
 – 
Max
10 Ноя 2014 в 15:04

4 ответа

Лучший ответ

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

enter image description here

0
asdf_enel_hak 10 Ноя 2014 в 13:30
Это должно работать, попробуйте с идентификатором, позволяющим null, посмотрите, работает ли он, чтобы обнаружить, что проблема не в другом месте
 – 
asdf_enel_hak
10 Ноя 2014 в 14:20
Имена этих полей разные
 – 
Rob
10 Ноя 2014 в 14:45
Перезапуск того же проекта и добавление новой таблицы с именем Table_New после ее удаления дает мне: недопустимый объект Table_New
 – 
Khan
10 Ноя 2014 в 14:52
При каждом новом запуске VS я не нахожу свою таблицу в проводнике объектов сервера
 – 
Khan
10 Ноя 2014 в 14:54
«Я не нахожу свою таблицу в обозревателе серверных объектов». Вы подключаетесь к базе данных в bin/Debug вместо базы данных в App_Data или в корне проекта?
 – 
ta.speot.is
10 Ноя 2014 в 15:39

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

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)
 );
1
Milen 10 Ноя 2014 в 13:33
ВСЕ та же проблема :-(
 – 
Khan
10 Ноя 2014 в 13:35
Если вы щелкните правой кнопкой мыши на таблице Script Table as -> Create to -> New Query Editor Window - есть ли сейчас семя? Также, если вы используете адаптеры таблиц, попробуйте обновить адаптеры таблиц...
 – 
Milen
10 Ноя 2014 в 13:46
Требуется ли удаление/воссоздание таблицы?
 – 
Khan
10 Ноя 2014 в 13:53
Значения начального числа и приращения не требуются, см. здесь. msdn.microsoft.com/en-us/library/ms186775.aspx
 – 
Jodrell
10 Ноя 2014 в 15:30

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

0
Khan 10 Ноя 2014 в 15:15
Это не ответ, к сожалению. Начальные значения не нужны для свойства IDENTITY, см. здесь. msdn.microsoft.com/en-us/library/ms186775.aspx Это указывает на то, что с вашим предыдущим объектом таблицы возникла какая-то неизвестная проблема.
 – 
Jodrell
10 Ноя 2014 в 15:29
ДА, перезапуска VS было достаточно для устранения проблемы. На самом деле окно сообщения не позволяло закрыть VS, и это сделали неупреждающие усилия.
 – 
Khan
10 Ноя 2014 в 15:46

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

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

УСТАНОВИТЬ IDENTITY_INSERT [dbo]. [Data_table] ON;


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

0
Jodrell 10 Ноя 2014 в 15:25
Где я должен попробовать это?
 – 
Khan
10 Ноя 2014 в 14:58