3

Sql Server CE 中的标识列存在问题

使用服务器资源管理器时,在VS2008中,执行以下脚本

SET IDENTITY_INSERT testTable ON; 插入 testTable (id,name) 值 (1,'Something') SET IDENTITY_INSERT testTable ON;

发送以下消息错误“不支持 Set SQL 构造或语句。” 但随后插入行很好?!?!?!

无论如何,当我尝试通过 C# 做同样的事情时,将该脚本作为命令文本给出它失败说错误出现在“插入关键字”中

我知道针对 SQL SERVER CE,该命令当时只接受一个批处理命令,所以在这种情况下,我们有三个命令(它可以与完整的 SQLServer 一起使用)有什么想法吗?

4

2 回答 2

9

如果您使用的是 SqlCe 3.5,那么这应该可以。但是,您需要将其作为两个单独的命令发送。您不能用“;”分隔命令 或 SqlCe 中的“GO”。相反,您需要执行以下操作:

            SqlCeConnection connection = new SqlCeConnection(connectionString);
            SqlCeCommand identChangeCommand = connection.CreateCommand();
            identChange.CommandText = "SET IDENTITY_INSERT SomeTable ON";
            SqlCeCommand cmd = connection.CreateCommand();
            cmd.CommandText = "INSERT INTO testTable (Id, column1, column2..) VALUES (10,val1,val2...)";
            try
            {
                connection.Open();
                identChange.ExecuteNonQuery();
                cmd.ExecuteNonQuery();
            }

            catch (SqlCeException ex)
            {
                //log ex
            }
            finally
            {
                connection.Close();
            }
于 2009-03-25T18:04:16.350 回答
2

尝试

SET IDENTITY_INSERT testTable ON; 
Insert into testTable (id,name) values (1,'Something');
SET IDENTITY_INSERT testTable OFF;

或者

SET IDENTITY_INSERT testTable ON
go
Insert into testTable (id,name) values (1,'Something')
go
SET IDENTITY_INSERT testTable OFF
go
于 2009-03-25T17:55:38.697 回答