1

列が自動インクリメントされるため、SQL ServerCE3.5テーブルに新しい行を挿入できません

私のスキーマは次のように単純です。

@"CREATE TABLE DataTable ("Foo_ID int PRIMARY KEY IDENTITY, " +
                          "FooName NVARCHAR(200) NOT NULL)

そして、C#での私の挿入ステートメント

SqlCeCommand cmd = new SqlCeCommand(@"INSERT INTO DataTable VALUES(@Foo_ID, @FooName)", con))
conn.Open();
cmd.Parameters.Add(new SqlCeParameter("FooName", "test123"));
cmd.ExecuteNonQuery();

次に、エラーが発生します。

System.IndexOutOfRangeException:ParameterName'Foo_ID'のSqlCeParameterは、このSqlCeParameterCollectionに含まれていません

4

3 に答える 3

3

FOO_IDは自動インクリメント列であるため、ステートメントIDENTITYから省略する必要があります 。INSERTそのため、値を挿入する列のリストを明示的に指定する必要があります-これを試してください:

SqlCeCommand cmd = new SqlCeCommand(@"INSERT INTO DataTable(FooName) VALUES(@FooName)", con))
conn.Open();
cmd.Parameters.Add(new SqlCeParameter("FooName", "test123"));
cmd.ExecuteNonQuery();
于 2012-12-13T08:19:22.537 に答える
1

問題は@Foo_ID、パラメーターにクエリとして含まれていることですが、そのようなパラメーターを で追加しないでくださいcmd.Parameters.Add

于 2012-12-13T08:00:41.953 に答える
-1

IDとして-1を送信してみてください。そうすると、自動インクリメントで正しい値が設定されます。

于 2012-12-13T08:10:04.317 に答える