我有命令:
INSERT INTO tbl_media
(DateAdded) VALUES (GetDate())
SELECT CAST(@@Identity AS int)
它对标准的sql db工作正常,但不能对CE db有效我收到以下错误:
SQL执行错误。
Executed SQL statement...
Error Source: SQL Server Compact ADO.NET Data Provider
Error Message: There was an error parsing the query. [Token line number = 2, Token line offset = 31, Token in error = )]
羞耻这个错误对任何人都知道可能发生的事情没有多大帮助?
干杯
UPDATE ::::::
在使用visual studio编辑器(垃圾)后,我下载了数据端口并阅读了MSDN。似乎有两个问题......
1)SELECT CAST(@@ Identity AS int)无效sql
SELECT @@ Identity is
2)当我将这两个命令放在一起时,SqlCe服务器不喜欢它:
INSERT INTO tbl_media (已添加日期)VALUES(getdate()) SELECT @@ Identity
如果我在不同的时间进行插入和选择,那么它可以工作。那我怎么绕这个呢?我不能在不同的时间做这件事我需要知道对象的ID,因为我创建它们!
更新2:
根据非常有帮助的Erik E,你不能同时做两个陈述。所以下面的解析是正确的,但不会起作用:
INSERT INTO tbl_media (DateAdded)VALUES(getdate()); SELECT @@ Identity;
所以我真正想知道的是,我如何保证在添加记录时身份不会混淆?
即。如果某人创建了一条记录,而某人正在为他们刚刚插入的人获取该身份,该怎么办?
答案 0 :(得分:4)
你有一个额外的)我不知道这是否会修复你的错误,但看看你有的价值
VALUES(GETDATE()))
'< - one)extra。
将其更改为:
INSERT INTO tbl_media(DateAdded)
VALUES (GetDate())
SELECT CAST(@@Identity AS int)
答案 1 :(得分:0)
每个ExecuteNonQuery调用只能运行一个SQL语句。因此,您必须进行2次通话。