SqlServerCE:TableAdapter + @@ identity

时间:2010-10-19 00:18:11

标签: c# sql c#-4.0

如何获取插入查询的ID?简单:

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

不起作用。当我尝试ExecuteScalar或任何其他我得到异常时:{“解析查询时出错。[令牌行号= 3,令牌行偏移= 95,错误令牌=选择]”}。

我提醒这是CE版。我正在使用MSVS2010

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

.Net SQL CE客户端不支持多个语句 您需要使用两个单独的SqlCeCommand

答案 1 :(得分:0)

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。