向 SQL server Compact 数据库插入自动增量密钥

Posted

技术标签:

【中文标题】向 SQL server Compact 数据库插入自动增量密钥【英文标题】:Insert an auto increment Key to SQL server Compact database 【发布时间】:2013-12-22 11:55:25 【问题描述】:

这是我的桌子Produit(ID,libelle,prix)。 ID 是自动递增的,这是插入指令:

cmd.Connection = connexion
cmd.CommandText = "INSERT into Produit_fini(libelle,prix) values (@libelle,@prix)"
cmd.Parameters.AddWithValue("@libelle", libelle)
cmd.Parameters.AddWithValue("@prix", prix)
connexion.Open()
cmd.ExecuteNonQuery()
connexion.Close()

执行之后,出现一个错误,说我不能在 ID 中插入 NULL 值!?

该列不能包含 NULL 值。 [列名=ID,表名 = Produit_fini ]

如何在此处插入 ID?

【问题讨论】:

您确定Id 列是自动递增的吗?即用IDENTITY(?, ?) 属性声明? 我以图形方式创建表格,因此这些是该列的属性:AllowDBNull = FalseAutoIncrement = trueAutoIncrementSeed = 1AutoIncrementStep = 1Datatype = System.Int32MaxLength = -1@MahmoudGamal 我真的不知道,但它应该可以正常工作。您能否尝试像ALTER TABLE Produit_fini ALTER COLUMN ID INT IDENTITY(1, 1); 那样以编程方式进行操作?然后尝试插入。 这个Sql请求不被允许执行不了! @MahmoudGamal "The ALTER TABLE SQL construct or statement is not supported."). 【参考方案1】:

似乎此列ID 未使用IDENTITY 属性定义。但是,您将无法更改表格以添加 IDENTITY 属性。

您必须删除表(如果其中没有数据),然后使用列 ID 具有 IDENTITY(1,1) 再次创建它。

您可能还需要使用 this tool Compactview 才能针对 SQL Server 精简版数据库运行语句。

【讨论】:

以上是关于向 SQL server Compact 数据库插入自动增量密钥的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2008 到 SQL Server Compact Edition?

使用 SQL Server Compact 与专用 SQL Server 数据库的缺点

SQL Server Express 和 SQL Server Compact Edition

SQL Server 可以复制到 SQL Server Compact Edition 吗?

无法备份 sql server compact 数据库

将 SQL Server 数据库导出到 sqlite(或 SQL Server Compact)的最佳方式