为什么这个sql server CE命令不起作用?

时间:2011-08-08 17:55:24

标签: tsql sql-server-ce

我有命令:

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;

所以我真正想知道的是,我如何保证在添加记录时身份不会混淆?

即。如果某人创建了一条记录,而某人正在为他们刚刚插入的人获取该身份,该怎么办?

2 个答案:

答案 0 :(得分:4)

你有一个额外的)我不知道这是否会修复你的错误,但看看你有的价值

VALUES(GETDATE()))'< - one)extra。

将其更改为:

INSERT INTO tbl_media(DateAdded) 
VALUES (GetDate()) 
SELECT CAST(@@Identity AS int) 

答案 1 :(得分:0)

每个ExecuteNonQuery调用只能运行一个SQL语句。因此,您必须进行2次通话。