Java 自动递增主键值给出空值错误
我正在尝试使用“SpringMVC”项目将数据插入MicrosoftServerManagementStudio表 联系人id已设置为Java 自动递增主键值给出空值错误,java,sql-server,sql-server-2008,spring-mvc,Java,Sql Server,Sql Server 2008,Spring Mvc,我正在尝试使用“SpringMVC”项目将数据插入MicrosoftServerManagementStudio表 联系人id已设置为非空和自动递增1。甚至它也试图插入null 我已经定义了用户id主键不为null和标识1。以下是要创建表的查询: CREATE TABLE contact ( contact_id[int] IDENTITY(1,1) NOT NULL, name varchar(45) NOT NULL, email varchar(45) NOT NULL,
非空
和自动递增1
。甚至它也试图插入null
我已经定义了用户id
主键不为null和标识1。以下是要创建表的查询:
CREATE TABLE contact (
contact_id[int] IDENTITY(1,1) NOT NULL,
name varchar(45) NOT NULL,
email varchar(45) NOT NULL,
address varchar(45) NOT NULL,
telephone varchar(45) NOT NULL,
PRIMARY KEY (contact_id)
)
表格设计:
错误:
SEVERE: Servlet.service() for servlet [SpringDispatcher] in context with path [/SpringMvcJdbcTemplate] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [INSERT INTO contact (name, email, address, telephone) VALUES (?, ?, ?, ?)]; Cannot insert the value NULL into column 'contact_id', table 'contactdb.dbo.contact'; column does not allow nulls. INSERT fails.; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Cannot insert the value NULL into column 'contact_id', table 'contactdb.dbo.contact'; column does not allow nulls. INSERT fails.] with root cause
com.microsoft.sqlserver.jdbc.SQLServerException: Cannot insert the value NULL into column 'contact_id', table 'contactdb.dbo.contact'; column does not allow nulls. INSERT fails.
代码行:
//插入
String sql = "INSERT INTO contact (name, email, address, telephone)"
+ " VALUES ('" + contact.getName() + "', '" + contact.getEmail() + "', '" + contact.getAddress() + "', '" + contact.getTelephone() + "')";
jdbcTemplate.update(sql);
更新
CREATE TABLE contact (
contact_id int IDENTITY NOT NULL PRIMARY KEY,
name varchar(45) ,
email varchar(45) NOT NULL,
address varchar(45) NOT NULL,
telephone varchar(45) NOT NULL
)
创建一个过程或在默认值中添加一个SCOPE_IDENTITY()方法。在更新的语句中尝试“IDENTITY(1,1)”,并停止在SQL中这样放置值-使用准备好的语句。有关其他非空列中的值,请参见。标识列fine@Anand仅供参考,仅指定“标识”与“标识(1,1)”相同。结果行为没有差别;它们都从1开始,递增1。@在这个SQL实例上打开SQL Server的探查器,选择“Replay”模板,然后尝试通过Java代码进行插入。捕获并分析生成的语句,并将其发布在此处。另一件要尝试的事情是:通过TSQL语句(而不是从Java代码)手动插入“contact”。它也失败了吗?这张桌子上有触发器吗?欢迎使用。通常,在提供答案时,您应该针对至少5-6行代码示例和一些链接。否则,你的答案看起来更像是一个评论。