3

Sql Server CE の ID 列で問題が発生しました

サーバーエクスプローラーを使用する場合、VS2008で、次のスクリプトを実行します

SET IDENTITY_INSERT testTable ON; testTable (id,name) 値 (1,'Something') に挿入します SET IDENTITY_INSERT testTable ON;

次のメッセージ エラー 'The Set SQL construct or statement is not supported.' を送信します。しかし、行をうまく挿入しますか?!?!?!

とにかく、C#で同じことをしようとすると、そのスクリプトをコマンドテキストとして指定すると、エラーが「キーワードの挿入」にあったと言って失敗します

SQL SERVER CEに対して、コマンドは一度に1つのバッチコマンドしか受け付けないことを理解しています。その場合、3つのコマンドがあります(完全なSQLServerで機能します)何か考えはありますか?

4

2 に答える 2

9

SqlCe 3.5を使用している場合、これは機能するはずです。ただし、2つの別々のコマンドとして送信する必要があります。コマンドを「;」で区切ることはできません。または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 に答える