IDENTITY_INSERT:java数据库操作JDBC-SQL插入数据(含自增列)

需求描述

在java中使用PreparedStatement向SQL server数据库中插入数据,以名为userTable的数据表举例,该表有一个int型的自增主键“id”:

类型 备注
id int 主键,自增
username varchar(20) 用户名
password varchar(20) 密码

现在要向userTable表插入一条数据:

{
	"username" : "A",
	"password" : "123"
}

id默认自增

在不需要指定id的情况下(id使用默认自增值),可用如下代码插入数据:

		PreparedStatement pstmt=null;
		SqlSrvDBConn sqlsrvdb=new SqlSrvDBConn();
		Connection ct=sqlsrvdb.getConn();
		// 如果未将数据对应的列名(username,password)具体指定,可能导致报错:
		// “仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'userTable'中的标识列指定显式值。”
		pstmt=ct.prepareStatement("insert into userTable(username,password) values(?,?)");
		pstmt.setString(1, "A");
2025/07/25 16:28:29 - Spoon - Running transformation using the Kettle execution engine 2025/07/25 16:28:29 - Spoon - 转换已经打开. 2025/07/25 16:28:29 - Spoon - 正在打开转换 [结果2]... 2025/07/25 16:28:29 - Spoon - 开始执行转换. 2025/07/25 16:28:29 - 结果2 - 为了转换解除补丁开始 [结果2] 2025/07/25 16:28:29 - Excel输入.0 - 完成处理 (I=6, O=0, R=0, W=6, U=0, E=0) 2025/07/25 16:28:29 - 插入 / 更新.0 - ERROR (version 9.0.0.0-423, build 9.0.0.0-423 from 2020-01-31 04.53.04 by buildguy) : Unexpected error 2025/07/25 16:28:29 - 插入 / 更新.0 - ERROR (version 9.0.0.0-423, build 9.0.0.0-423 from 2020-01-31 04.53.04 by buildguy) : org.pentaho.di.core.exception.KettleDatabaseException: 2025/07/25 16:28:29 - 插入 / 更新.0 - Unable to prepare statement for SQL statement [UPDATE ODS.CHAR_LIST 2025/07/25 16:28:29 - 插入 / 更新.0 - SET ID = ? 2025/07/25 16:28:29 - 插入 / 更新.0 - , FIRST_NAME = ? 2025/07/25 16:28:29 - 插入 / 更新.0 - , LAST_NAME = ? 2025/07/25 16:28:29 - 插入 / 更新.0 - , GENDER = ? 2025/07/25 16:28:29 - 插入 / 更新.0 - , AGE = ? 2025/07/25 16:28:29 - 插入 / 更新.0 - , KONG_FU = ? 2025/07/25 16:28:29 - 插入 / 更新.0 - WHERE ( ( ID = ? ) ) AND ( ( FIRST_NAME = ? ) ) AND ( ( LAST_NAME = ? ) ) AND ( ( GENDER = ? ) ) AND ( ( AGE = ? ) ) AND ( ( KONG_FU = ? ) ) ] 2025/07/25 16:28:29 - 插入 / 更新.0 - 第8 行附近出现错误: 试图修改自增列[ID] 2025/07/25 16:28:29 - 插入 / 更新.0 - 2025/07/25 16:28:29 - 插入 / 更新.0 - at org.pentaho.di.trans.steps.insertupdate.InsertUpdate.prepareUpdate(InsertUpdate.java:463) 2025/07/25 16:28:29 - 插入 / 更新.0 - at org.pentaho.di.trans.steps.insertupdate.InsertUpdate.processRow(InsertUpdate.java:294) 2025/07/25 16:28:29 - 插入 / 更新.0 - at org.pentaho.di.trans.step.RunThread.run(RunThread.java:62) 2025/07/25 16:28:29 - 插入 / 更新.0 - at java.lang.Thread.run(Unknown Source) 2025/07/25 16:28:29 - 插入 / 更新.0 - Caused by: dm.jdbc.driver.DMException: 第8 行附近出现错误: 试图修改自增列[ID] 2025/07/25 16:28:29 - 插入 / 更新.0 - at dm.jdbc.driver.DBError.throwException(DBError.java:698) 2025/07/25 16:28:29 - 插入 / 更新.0 - at dm.jdbc.b.b.o.N(MSG.java:564) 2025/07/25 16:28:29 - 插入 / 更新.0 - at dm.jdbc.b.b.o.K(MSG.java:520) 2025/07/25 16:28:29 - 插入 / 更新.0 - at dm.jdbc.b.b.o.J(MSG.java:501) 2025/07/25 16:28:29 - 插入 / 更新.0 - at dm.jdbc.b.a.a(DBAccess.java:244) 2025/07/25 16:28:29 - 插入 / 更新.0 - at dm.jdbc.b.a.a(DBAccess.java:704) 2025/07/25 16:28:29 - 插入 / 更新.0 - at dm.jdbc.driver.DmdbPreparedStatement.prepareSql(DmdbPreparedStatement.java:214) 2025/07/25 16:28:29 - 插入 / 更新.0 - at dm.jdbc.driver.DmdbPreparedStatement.allocateHandle(DmdbPreparedStatement.java:185) 2025/07/25 16:28:29 - 插入 / 更新.0 - at dm.jdbc.driver.DmdbPreparedStatement.<init>(DmdbPreparedStatement.java:122) 2025/07/25 16:28:29 - 插入 / 更新.0 - at dm.jdbc.driver.DmdbPreparedStatement.<init>(DmdbPreparedStatement.java:152) 2025/07/25 16:28:29 - 插入 / 更新.0 - at dm.jdbc.driver.DmdbConnection.do_prepareStatement(DmdbConnection.java:727) 2025/07/25 16:28:29 - 插入 / 更新.0 - at dm.jdbc.driver.DmdbConnection.do_prepareStatement(DmdbConnection.java:713) 2025/07/25 16:28:29 - 插入 / 更新.0 - at dm.jdbc.driver.DmdbConnection.prepareStatement(DmdbConnection.java:1332) 2025/07/25 16:28:29 - 插入 / 更新.0 - at org.pentaho.di.trans.steps.insertupdate.InsertUpdate.prepareUpdate(InsertUpdate.java:461) 2025/07/25 16:28:29 - 插入 / 更新.0 - ... 3 more 2025/07/25 16:28:29 - 插入 / 更新.0 - 完成处理 (I=0, O=0, R=1, W=0, U=0, E=1) 2025/07/25 16:28:29 - 结果2 - ERROR (version 9.0.0.0-423, build 9.0.0.0-423 from 2020-01-31 04.53.04 by buildguy) : 错误被检测到! 2025/07/25 16:28:29 - Spoon - 转换完成!! 2025/07/25 16:28:29 - 结果2 - ERROR (version 9.0.0.0-423, build 9.0.0.0-423 from 2020-01-31 04.53.04 by buildguy) : 错误被检测到! 2025/07/25 16:28:29 - 结果2 - ERROR (version 9.0.0.0-423, build 9.0.0.0-423 from 2020-01-31 04.53.04 by buildguy) : 错误被检测到! 2025/07/25 16:28:29 - 结果2 - 转换被检测 2025/07/25 16:28:29 - 结果2 - 转换正在杀死其他步骤!
最新发布
07-26
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值