簡體   English   中英

錯誤:列索引超出范圍:1,列數:0

[英]error: The column index is out of range: 1, number of columns: 0

我正在嘗試解決插入 Postgresql 表的問題

我看了這個類似的問題,但沒有解決我的問題

錯誤:列索引超出范圍:1,列數:0

這是出現錯誤的代碼部分:

String query = "INSERT INTO reviews (nbstar, body, author, product_id) VALUES($1,$2,$3,$4)";

PreparedStatement prepareStatement = connection.prepareStatement(query);
prepareStatement.setInt(1, nbStar);
prepareStatement.setString(2, body);
prepareStatement.setString(3, author);
prepareStatement.setInt(4, productId);

boolean executed = prepareStatement.execute();

我多次嘗試更改索引號,但仍然出現相同的錯誤

這是表的架構:

表架構

誰能給我一個建議?

謝謝。

在 sql 查詢中,您想插入 5 個字段(id、nbstar、body、author、product_id)的值,但只有 4 個值 VALUES($1,$2,$3,$4)。


按照您編輯的問題進行更新,只需按如下方式修改您的查詢:

VALUES($1,$2,$3,$4) 

VALUES(?,?,?,?)

我的問題是問號周圍有單引號,我從直接 sql 復制粘貼了查詢,所以我只是用 ? 替換了字符串。 例如Select * from datatable where id = '?' 我不得不將其更改為Select * from datatable where id = ?

對我來說,我添加了一條評論,其中包括一個問號。 傻我!

我遇到了同樣的錯誤,因為我在以下查詢中缺少最后一個 \\n,我希望這對某人有所幫助。

                    "                order by mp.id desc\n" +
                "                limit 1\n" +
                "            ) as mge_mp\n" +
                "      )\n" +
                "\n" +
                "-- #pageable\n",

我的最后一行是

                    "-- #pageable",

萬一你得到這個錯誤,對於我自己的問題,我正在傳遞一個以變量旁邊的字符結尾的字段,例如:

select * from my_schema."my_table" mt
where
        mt.field_2 = variable_2
        and mt.field_1 = 'variable_1' 
        [[and cast(mt.date as DATE) = {{date_picked}}]]

-> 失敗並出現以下錯誤:列索引超出范圍:1,列數:0

變成:

select * from my_schema."my_table" mt
where
        mt.field_1 = 'variable_1' 
        and mt.field_2 = variable_2
        [[and cast(mt.date as DATE) = {{date_picked}}]]
  • 請注意以引號字符結尾的變量已被移動。

-> 這對我有用。

對我來說,問題是在查詢字符串的末尾有一個分號。 類似的東西:

String query = "INSERT INTO reviews (nbstar, body, author, product_id) VALUES(?,?,?,?);";

注意; 附加到查詢字符串的末尾。 解決方法是將其刪除:

String query = "INSERT INTO reviews (nbstar, body, author, product_id) VALUES(?,?,?,?)";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM