SqlServerCE: TableAdapter + @@ identity - PullRequest
       0

SqlServerCE: TableAdapter + @@ identity

0 голосов
/ 19 октября 2010

Как получить идентификатор запроса на вставку? Простой:

insert into Ex(sth) values("value");
select @@identity

не работает. Когда я пытаюсь выполнить ExecuteScalar или любое другое, я получаю исключение: {"Произошла ошибка при разборе запроса. [Номер строки токена = 3, смещение строки токена = 95, Ошибка токена = выбрать]"}.

Напоминаю, что это издание CE. Я использую MSVS2010

Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 19 октября 2010

Клиент .Net SQL CE не поддерживает несколько операторов.
Вам необходимо использовать два отдельных SqlCeCommand s.

0 голосов
/ 12 июля 2011

TableAdapter (.NET 4) закрывает соединение после выполнения команды, только если оно было закрыто до выполнения команды. Так что используйте что-то вроде этого:

try
            {
                if (_tasksAdapter.Connection.State != ConnectionState.Open)
                    _tasksAdapter.Connection.Open();

                _tasksAdapter.InsertNew(_partitionedFile.Uid, _partitionedFile.Checksum);
                _dbId = (int)_tasksAdapter.GetIdentity().Value;
            }
            finally
            {                    
                if (_tasksAdapter.Connection.State != ConnectionState.Closed)
                    _tasksAdapter.Connection.Close();
            }

где методы InsertNew выполняет команду INSERT, а метод GetIdentity () выполняет SELECT @@ IDENTITY.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...