Tsql 为什么这个SQLServerCE命令不能工作?

Tsql 为什么这个SQLServerCE命令不能工作?,tsql,sql-server-ce,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 e

我有命令:

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 = )]
遗憾的是,这个错误没有多大用处。有人知道会发生什么吗

干杯

更新:

在大量使用VisualStudio编辑器垃圾后,我下载了数据端口并阅读了MSDN。似乎有两个问题

1选择强制转换@标识为int无效sql

选择@@标识为

2当我将这两个命令放在一起时,SQLServer不喜欢它:

插入tbl_介质 DateAdded值getdate 选择@标识

如果我在不同的时间进行插入和选择,它就会工作。那我该怎么解决这个问题呢?我不能在不同的时间做,我需要知道的对象ID,因为我创建他们

更新2:

根据非常有用的Erik E,你不能同时做两个陈述。因此,以下解析是正确的,但不起作用:

插入tbl_介质 DateAdded值getdate; 选择@标识

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


也就是说,如果有人在获取刚刚插入的记录的标识时创建了一个记录,该怎么办?

您有一个额外的记录,我不知道这是否会修复您的错误,但请查看您的值


VALUESGETDATE'您有一个额外的我不知道这是否会修复您的错误,但请查看您的值



VALUESGETDATE'每次ExecuteOnQuery调用只能运行一条SQL语句。因此必须分为两个调用。

每个ExecuteOnQuery调用只能运行一条SQL语句。因此,您必须分为两个调用。

错误确实表明,删除后的第2行偏移量31 token in error=@Pete2K这是否正常工作,请提供一些反馈,以便我们知道这是否仍然是一个问题或可以关闭?不,我不打算更新我的回答错误显示第2行offset 31 token in error=@Pete2K删除后,这是否正在工作,请提供一些反馈,以便我们知道这是否仍然是一个问题或可以关闭?不,我不会更新我的answer@Pete2k-是时候把它拆开了,没什么大不了的。首先,只从INSERT语句开始,这一点单独起作用吗?如果可以,我们知道这是选择的问题?如果第一部分单独工作,请尝试选择演员的第二部分。。单独地如果他们分开工作,那么看起来就像上面的@ErikEJ击中了头上的钉子一样。@Pete2k-是时候开始把它拆开了,这并不多。首先,只从INSERT语句开始,这一点单独起作用吗?如果可以,我们知道这是选择的问题?如果第一部分单独工作,请尝试选择演员的第二部分。。单独地如果他们分开工作,那么看起来上面的@ErikEJ一针见血。嗨,Erik,再次感谢您的帮助,但是如果插入记录的用户中的另一个用户在我有机会插入“this”用户数据记录之前插入了一行呢?,这是否意味着用户可能会意外地获得另一个用户记录的ID?@Pete2k-是的,这可能会发生。那么您如何确保它不会发生?我的意思是,你怎么能向数据库中添加一些内容,并知道在你例如发回表单时是否正确添加了这些内容?SQL Server Compact不是一个多用户数据库,它只在一台计算机上运行,如果你将这两个调用封装在一个SqlCeTransaction中,就不会发生这种情况。嗨,Erik,再次感谢你的帮助,但是,如果插入记录的用户中的另一个用户在我有机会插入“this”users data record之前插入了一行,这是否意味着该用户可能会意外获得另一个用户记录的ID?@Pete2k-是的,这可能会发生。那么,您如何确保它不会发生?我的意思是,你怎么能向数据库中添加一些东西,并知道你在例如发回表单时是否正确添加了这些东西?SQL Server Compact不是一个多用户数据库,它只在一台计算机上运行,如果你将这两个调用包装在一个SqlCeTransaction中,就不会发生这种情况。
INSERT INTO tbl_media(DateAdded) 
VALUES (GetDate()) 
SELECT CAST(@@Identity AS int)