SQL-сервер CE - Временный отключает автоматический инкремент на определенном столбце

У меня есть этот небольшой вопрос, которым это было на моем уме некоторое время теперь.

Здесь это идет:

Действительно ли это возможно к временному файлу, отключают Auto_Increment на идентификаторе столбца.

Так, чтобы я мог добавить, что новая строка к таблице и способности указывает Значение идентификатора при вставке строки.

И затем в конце включают Auto_Increment снова и позволяют, делают его работу, как обычно?

И если его возможное, как я могу сделать это?

Структура таблицы очень проста

Имя столбца (атрибуты)

ID (Primary Key, Auto Increment, int, not null)
Name (nvarchar(100), not null)

Примечание:

  • Имя таблицы: People.
  • Давайте также полагать, что таблица уже имеет данные и не может быть изменена.
  • Сервер базы данных является SQL Server CE.
  • Команды SQL будут выполняться в программе C#, если это будет иметь какую-либо справку.

Я действительно надеюсь, что его возможное, это прибыло бы очень удобное.

Спасибо

Править

SqlActions SqlActions = new SqlActions();

SqlCeCommand SqlCmd = new SqlCeCommand("SET IDENTITY_INSERT People ON", SqlActions.Connection());

try
{
    SqlCmd.ExecuteNonQuery();
}
catch (SqlCeException Error)
{
    Console.WriteLine(Error.ToString());
}

string query = "INSERT INTO People SET (ID, Nome) VALUES (@ID, @Nome)";

SqlCeCommand SqlInsert = new SqlCeCommand(query, SqlActions.Connection());

SqlInsert.Parameters.AddWithValue("@ID", 15);
SqlInsert.Parameters.AddWithValue("@Nome", "Maria");

try
{
    SqlInsert.ExecuteNonQuery();
}
catch (SqlCeException Error)
{
    Console.WriteLine(Error.ToString());
}

Строка подключения работает, я попробовал ее.

Он сообщает:

Была ошибка при парсинге запроса. [Маркерный номер строки = 1, Маркерное смещение строки = 20, Маркер по ошибке = НАБОР]

РЕШЕНИЕ благодаря OrbMan

        SqlActions SqlActions = new SqlActions();

        SqlCeCommand SqlCmd = new SqlCeCommand("SET IDENTITY_INSERT People ON", SqlActions.Connection());
        try
        {
            SqlCmd.ExecuteNonQuery();

            string query = "INSERT INTO People (ID, Nome) VALUES (@ID, @Nome)";
            SqlCmd.CommandText = query;
            SqlCmd.Parameters.AddWithValue("@ID", 15);
            SqlCmd.Parameters.AddWithValue("@Nome", "Vania");
            SqlCmd.ExecuteNonQuery();
        }
        catch (SqlCeException Error)
        {
            Console.WriteLine(Error.ToString());
        }
6
задан Community 23 May 2017 в 10:09
поделиться

1 ответ

Я считаю, что вы можете использовать SET IDENTITY_INSERT . Я не уверен, работает ли это во всех версиях.

Обновление 2:

Попробуйте эту версию:

SqlActions SqlActions = new SqlActions();
SqlCeCommand SqlCmd = new SqlCeCommand("SET IDENTITY_INSERT People ON", SqlActions.Connection());
try
{
    SqlCmd.ExecuteNonQuery();
    string query = "INSERT INTO People (ID, Nome) VALUES (@ID, @Nome)";
    SqlCmd.CommandText = query;
    SqlCmd.Parameters.AddWithValue("@ID", 15);
    SqlCmd.Parameters.AddWithValue("@Nome", "Maria");
    SqlCmd.ExecuteNonQuery();
}
catch (SqlCeException Error)
{
    Console.WriteLine(Error.ToString());
}
8
ответ дан 16 December 2019 в 21:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: