java - org.postgresql.util.PSQLException : The column index is out of range: 2, 列数:1

标签 java postgresql jdbc

我有以下代码:

String insert = "INSERT INTO " + tableName +
                "(" + COLUMNS.TILE_ID + "," + COLUMNS.TILE_DATA + "," +
                COLUMNS.TILE_LEVEL + "," + COLUMNS.TILE_COLUMN +
                "," + COLUMNS.TILE_ROW +
                "," + COLUMNS.TILE_IMAGE_FORMAT + "," + COLUMNS.TILE_SOURCE +
                ")";
String values = id + ",?" + "," +
                tile.getLevel() + "," + tile.computeColumn() + "," +
                tile.computeRow() + ",\'" + tile.getFileType().toUpperCase() +
                "\'," + "\'" +
                tile.getSource() + "\');";
        String query = insert + " VALUES (" + values;
        System.out.println(query);
        PreparedStatement statement = conn.prepareStatement(query);
        statement.setBytes(2, tile.getData());
        return this.conn.createStatement().executeUpdate(query);

查询值:

INSERT INTO level1 (TILE_ID,TILE_DATA,TILE_LEVEL,TILE_COLUMN,TILE_ROW,TILE_IMAGE_FORMAT,TILE_SOURCE) VALUES (0,?,1,0,0,'JPG','null');

我得到的错误:

org.postgresql.util.PSQLException: The column index is out of range: 2, number of columns: 1.

我的 table :

tile_id bigint NOT NULL,
  tile_data bytea,
  tile_level smallint,
  tile_row integer,
  tile_column integer,
  tile_image_format image_format,
  tile_source character varying(30),
  CONSTRAINT level10_pkey PRIMARY KEY (tile_id)

有什么想法吗?

最佳答案

您尚未发布堆栈跟踪,但您的错误似乎由此出现:

statement.setBytes(2, tile.getData());

这是因为您只有一个要绑定(bind)的参数:

INSERT INTO level1 (TILE_ID,TILE_DATA,TILE_LEVEL,TILE_COLUMN,TILE_ROW,TILE_IMAGE_FORMAT,TILE_SOURCE) VALUES (0,?,1,0,0,'JPG','null');

参数位于值列表中位置 2 的事实并不重要。事实上,它是第一名,这一点很重要。所以你的代码应该是,

statement.setBytes(1, tile.getData());

关于java - org.postgresql.util.PSQLException : The column index is out of range: 2, 列数:1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37714583/

相关文章:

java - 如何使用 jdbc 和 JUNIT 创建数据库死锁

java - 无法从 20 个随机生成的数字中打印最大的数组数字

java - 如何在 JTextArea 列表中浏览此代码的结果?

java - ResultSet 的 JDBC 超时我做得对吗?

java - JDBC:多个请求时安全行更新

SQL查询将一个表中的值插入到另一个表中

java - 用于 portlet 的 Spring MVC,请求生命周期

java - 在 Espresso Java/Android 中等待匹配器

postgresql - Postgres : how to start a procedure right after database start?

sql - 选择 Where Like 正则表达式