Я использую SQL Server, и у меня есть ID
(автоинкремент) для новых записей в SQL Server.
Особенность: код добавляет текущее значение автоинкремента, а не максимальное, которое используется в таблице.
Другими словами: максимальное значение столбца ID
равно «3», текущее значение автоматического приращения равно 5, поскольку записи с ID = "4"
и «5» были удалены. Поэтому ID
новой записи будет равно "6".
Структура таблицы:
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;
}
}