Как сделать автоматическую подстановку идентификатора из базы данных в dataGridView для новой записи? - PullRequest
0 голосов
/ 17 марта 2019

Я использую SQL Server, и у меня есть ID (автоинкремент) для новых записей в SQL Server.
Особенность: код добавляет текущее значение автоинкремента, а не максимальное, которое используется в таблице.

Другими словами: максимальное значение столбца ID равно «3», текущее значение автоматического приращения равно 5, поскольку записи с ID = "4" и «5» были удалены. Поэтому ID новой записи будет равно "6".

enter image description here

Структура таблицы:

CREATE TABLE [dbo].[tbl_01_Groups] 
(
    [id_group] INT IDENTITY(1,1) NOT NULL,
    [nameGroup] NVARCHAR(255) COLLATE Cyrillic_General_CI_AS NULL,
    [Property_1_Group] NVARCHAR(255) COLLATE Cyrillic_General_CI_AS NULL,
    [Property_2_Group] NVARCHAR(255) COLLATE Cyrillic_General_CI_AS NULL,
    [Property_3_Group] NVARCHAR(255) COLLATE Cyrillic_General_CI_AS NULL,

    CONSTRAINT [PK_tbl_01_Groups_2] 
        PRIMARY KEY NONCLUSTERED ([id_group])
                WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
                      IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = OFF, ALLOW_PAGE_LOCKS = OFF) ON [PRIMARY]
)

Мой код для работы с базой данных:

public DataTable CreateCmds_2()
{
    table_2 = new DataTable();

    try
    {
        string connectionString = @"Data Source=.\SQLEXPRESS1;Initial Catalog=Prb;Integrated Security=True";

        string queryString = "SELECT * FROM tbl_01_Groups";

        connection = new SqlConnection(connectionString);

        adapter = new SqlDataAdapter();
        adapter.SelectCommand = new SqlCommand(queryString, connection);

        builder = new SqlCommandBuilder(adapter);
        // adapter.UpdateCommand = builder.GetUpdateCommand(true); //Добавил
        cb = new SqlCommandBuilder(adapter);

        connection.Open();
        adapter.Fill(table_2);
    }
    catch (Exception ex)
    {
        string s = ex.Message;
        string t = ex.StackTrace;
        // throw;
    }

    return table_2;
}

public void Save_1()
{
    try
    {
        // adapter.AcceptChangesDuringUpdate = true;
        adapter.Update(table_2);
        //adapter.acce
    }
    catch (Exception ex)
    {
        string s = ex.Message;
        string t = ex.StackTrace;
        // throw;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...