当前位置: 首页 > 知识库问答 >
问题:

DB2插入中的JDBC错误(适用于Sql Server)

苍嘉澍
2023-03-14

我在Java应用程序中使用JDBC来查询DBMS。该应用程序与Sql Server一起正常工作,但在一次插入过程中,我在DB2中遇到了这个错误:

com.ibm.db2.jcc.am.SqlDataException: DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=1, DRIVER=3.63.75

使用<code>ResultSet进行插入。TYPE_SCROLL_SENSITIVE,结果集.CONCUR_UPDATABLE。

我的查询是一个简单的表选择,然后我声明我的< code>PreparedStatement,传递参数,然后用< code>ResultSet首先做< code>moveToInsertRow(),然后做< code>insertRow()。

您知道使用DB2的这种方法有什么问题吗?

正如我之前告诉您的那样,相同的代码在 Sql Server 上可以正常工作。

共有2个答案

白学
2023-03-14

添加到这个线程可能太晚了…但其他人可能会觉得它很有用

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

SELECT * FROM <schema>.<table_name> WHERE PropertyName = 'value'; 

值是< code>VARCHAR类型,但超出了长度限制

详细的异常确实清楚地说明了数据完整性被违反了:org.springframework.dao.DataGregityViolationExc的

因此,一个好主意是在对数据库触发任何查询之前对属性上设置的值进行长度检查。

缪兴腾
2023-03-14

DB2上的SQL代码-302意味着:

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

因此,看起来您试图将一个值插入到一个太大或太短的列中(例如,将< code>Hello World插入到< code>varchar(5))。可能DB2和sql-server中的列长度不同,或者您插入了不同的值。

 类似资料:
  • 问题内容: 我正在尝试使用jdbc将一些数据插入到我的数据库中。我正在使用正确的表,数据库名称和参数。一切检查完毕。 代码 这是当我尝试运行它时给我的错误: 问题答案: 您在此行中有语法错误: 您缺少values子句的右括号。

  • 问题内容: 在我的Node.js应用程序中,我试图连接到Amazon上托管的MySQL数据库。 我的代码如下所示: 我可以使用Workbench连接到我的MySQL数据库-因此,我很确定我的凭据可以。 当我尝试连接时,出现以下错误: Connection.js:91未捕获的TypeError:Net.createConnection不是函数 从npm库中调试代码-这是引发错误的地方: 该具有相关性

  • 我是Spring Boot的新手。 我正在尝试编写一个 rest api,它应该从数据库中获取数据并将其显示给消费者。我不知道如何处理这个问题。 请帮助在Liberty Server上使用JDBC数据源运行应用程序。简单的Spring启动Rest服务工作正常。 如果有很多问题,请原谅我。我想学这个。 这是我的pom文件: DemoService.java OracleDatabaseConfigu

  • 依照 JDBC 规范,有四种类型的 JDBC 驱动程序体系结构: Type 1:这类驱动程序将 JDBC API 作为到另一个数据访问 API 的映射来实现,如开放式数据库连通性(Open Database Connectivity,ODBC)。这类驱动程序通常依赖本机库,这限制了其可移植性。JDBC-ODBC 桥驱动程序就是 Type 1 驱动程序的最常见的例子。 Type 2:这类驱动程序部分

  • 问题内容: 我最近开始学习使用myBatis。现在面对这样的情况,我需要通过WebService不断获取新的对象列表,然后对于该列表,我需要通过以下方式将每个对象插入/更新到oracle DB表中: myBatis。 棘手的部分是,我不能每次都简单地进行批量插入,因为某些对象可能已经存在于数据库中,对于这些记录,我需要更新它们的字段而不是新插入。 我当前的解决方案可能非常愚蠢,使用Java,从We

  • 我的Linux本地机器中有这个风景。 > MySQL数据库在我的本地主机中运行(不在容器中) 我正在使用IntelliJ和Maven开发代码。 如果我从IntelliJ运行代码,应用程序运行良好,但如果我生成docker映像并部署它,则错误为 错误de conexion:java.sql.sqlexception:找不到适用于JDBC的驱动程序:mysql://localhost:3306/dat