java sql错误列的类型是整数,但表达式的类型是字符变化

标签 java sql exception

我准备了sql语句:

PreparedStatement insert_query = db.prepareStatement(String.format(INSERT_QUERY, table, 
                              columns.toString(), placeholder));
System.out.println(insert_query);

结果:
INSERT INTO "article" (article_text, article_id, article_title) VALUES (?, ?, ?) RETURNING article_id

接下来我创建值列表,设置参数并执行插入查询:
ArrayList<String> values = new ArrayList<String>(); -- > is [New CONTENT, 4, New TITLE]
for (int i = 1; i <= values.size(); i++) {
            insert_query.setString(i, values.get(i-1));
        }
System.out.println(insert_query);
insert_query.executeUpdate();

我有一个错误:
INSERT INTO "article" (article_text, article_id, article_title) VALUES ('New CONTENT', '4', 'New TITLE') RETURNING article_id

Exception in thread "main" org.postgresql.util.PSQLException: ERROR: column "article_id" is of type integer but expression is of type character varying

article_id 有问题。我把它作为字符串放在这里。但是,当我在 PostgreSQL 中手动尝试此查询时,一切正常(((

最佳答案

对于article_id,你必须做insert_query.setInteger而不是 insert_query.setString .当我检查您的异常时,article_id 作为字符串发送到数据库。这就是为什么你有这个异常(exception)。

关于java sql错误列的类型是整数,但表达式的类型是字符变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29279741/

相关文章:

java - 在 lucene-core.jar 之前运行 `SolrTestCaseJ4` 测试 : Fix your classpath to have tests-framework. jar 时出现断言错误

java - Java 中的数字反转。前导零和尾随零不会打印

java - 更新Spring Boot以生成WAR文件而不是JAR文件

c# - 处理源自线程的错误的标准方法

c++ - 如何在 C++ 中捕获 char * 异常

java - 在Android上使用mockito加速编译

mysql - 将值传递给可能为空的查询

sql - 表中 'next' 和 'previous' 的 SQL 是什么?

SQL: 在 SQL 表中查找第一行第一列

exception - Jersey ExceptionMapper 和继承