DB2插入中的JDBC错误(与Sql Server一起使用)

DB2插入中的JDBC错误(与Sql Server一起使用),jdbc,db2,Jdbc,Db2,我在Java应用程序中使用JDBC查询DBMS。应用程序在Sql Server上正常工作,但在一次插入期间,我在DB2中遇到了以下错误: SqlDataException:db2sql错误:SQLCODE=-302,SQLSTATE=22001,SQLERRMC=1,DRIVER=3.63.75 插入是使用ResultSet.TYPE\u SCROLL\u敏感、ResultSet.CONCUR\u可更新的进行的 我的查询是对表的简单选择,然后声明我的PreparedStatement,传递参数,

我在Java应用程序中使用JDBC查询DBMS。应用程序在Sql Server上正常工作,但在一次插入期间,我在DB2中遇到了以下错误:

SqlDataException:db2sql错误:SQLCODE=-302,SQLSTATE=22001,SQLERRMC=1,DRIVER=3.63.75

插入是使用
ResultSet.TYPE\u SCROLL\u敏感、ResultSet.CONCUR\u可更新的
进行的

我的查询是对表的简单选择,然后声明我的
PreparedStatement
,传递参数,然后使用
ResultSet
首先执行
moveToInsertRow()
,然后执行
insertRow()

您知道使用DB2的这种方法是否有任何问题吗

正如我之前告诉您的,相同的代码可以正确地用于Sql Server。

在DB2上意味着:

输入变量或参数编号位置编号的值对于目标列或目标值无效或太大


因此,您似乎试图将一个值插入一个过大或过短的列中(例如,
Hello World
插入
varchar(5)
)。可能该列在DB2和sql server中的长度不同,或者您正在插入不同的值。

添加到此线程可能太晚了。。但其他人可能会发现它很有用

尝试执行
SELECT
时遇到相同的SQL异常:未意识到
中的属性值,其中
子句超出了相应列上的限制

SELECT * FROM <schema>.<table_name> WHERE PropertyName = 'value'; 
从中选择*。其中PropertyName='value';
值是
VARCHAR
类型,但超出了长度限制

详细的异常确实清楚地表明数据完整性受到了侵犯:
org.springframework.dao.DataIntegrityViolationException


因此,在对数据库进行任何查询之前,最好对属性上设置的值进行长度检查。

您好,谢谢您的回复,我已经检查了表,它们是相同的。数据也是正确的,因为我从对具有固定字段的cobol例程的调用中获取这些数据(这些字段映射在具有固定长度的cobol副本中)。我将尝试在不使用ResultSet.TYPE\u SCROLL\u SENSITIVE、ResultSet.CONCUR\u update的情况下更改插入,并让您知道。谢谢again@user3265189数据中是否有要插入的特殊字符?您知道哪个列导致此错误吗?这些都是很高兴知道的细节。嗨,没有特殊字符,我已经做了我告诉你的测试(即,没有使用ResultSet.TYPE\u SCROLL\u SENSITIVE,ResultSet.CONCUR\u updateable),现在它工作正常了!可能客户端使用的驱动程序不支持此功能,或者在DBMS上添加了一个选项。