1

由于自动增量列,我无法向 SQL Server CE 3.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:此 SqlCeParameterCollection 不包含具有 ParameterName 'Foo_ID' 的 SqlCeParameter

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

尝试发送 -1 作为 ID,这样它将强制自动增量设置正确的值。

于 2012-12-13T08:10:04.317 回答