欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決java.sql.SQLException:索引中丟失 IN或OUT 參數(shù)::x問題

 更新時間:2023年12月13日 16:46:29   作者:bisal(Chen Liu)  
這篇文章主要介紹了解決java.sql.SQLException:索引中丟失 IN或OUT 參數(shù)::x問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

java.sql.SQLException:索引中丟失 IN或OUT 參數(shù)::x

使用JDBC時,會有這么一個錯誤:java.sql.SQLException: 索引中丟失 IN或OUT 參數(shù)::x

如下:

示例中insertLog.execute();這行會拋出這個異常:

String logSQL = "insert into tbl_obj(id, obj, type, cont, proposer, operator, date, remark) "
                       + "values(seq_tot.nextval, ?, ?, ?, ?, ?, SYSDATE, ?)";
insertLog = conn.prepareStatement(logSQL);
insertLog.setString(2, trace.getObj());
insertLog.setString(3, trace.getType());
insertLog.setString(4, trace.getCont());
insertLog.setString(5, trace.getProposer());
insertLog.setString(6, trace.getOperator());
insertLog.setString(8, trace.getRemark());
insertLog.execute();

檢索了一些帖子,對于這種問題,指出的原因很多

  • 全角半角引起;
  • 參數(shù)過多;
  • 配置文件和數(shù)據庫字段類型不一致;
  • 或是數(shù)據庫的索引問題等”

根據錯誤提示,歸結為兩點

(1) 索引是否有問題?(“索引中丟失”)

(2) 字段賦值是否與數(shù)據庫字段類型匹配?

  • 對于(1)的論證:

查看這張表的索引,這張表是以ID作為主鍵,沒有其他索引,因此只有一個主鍵索引,查看狀態(tài)也是VALID的,沒有錯誤:

SQL> select index_name, status from user_indexes where table_name='TBL_OBJ_TRACE';
 
INDEX_NAME                     STATUS
------------------------------ --------
SYS_C0031302                   VALID
  • 對于(2)的論證:

首先看了trace的set/get方法中對字段類型的定義,都是String,對應庫中的字段類型都是VARCHAR2,沒有差別。

其次再看setString,和VALUES中字段是對應的啊。

其實問題就出在這了,看下setString方法的解釋:

void java.sql.PreparedStatement.setString(int parameterIndex, String x) throws SQLException
 
Sets the designated parameter to the given Java String value. The driver converts this to an SQL VARCHAR or LONGVARCHAR value (depending on the argument's size relative to the driver's limits on VARCHAR values) when it sends it to the database.
 
Parameters:
parameterIndex the first parameter is 1, the second is 2, ...
x the parameter value
Throws:
SQLException - if parameterIndex does not correspond to a parameter marker in the SQL statement; if a database access error occurs or this method is called on a closed PreparedStatement

可以看到第一個參數(shù)parameterIndex,參數(shù)索引,parameterIndex does not correspond to a parameter marker in the SQL statement(如果沒有對應到SQL語句中的參數(shù)標識符),則會拋出SQLException異常。

SQL語句中values(seq_tot.nextval, ?, ?, ?, ?, ?, SYSDATE, ?)的參數(shù)標識符一共6個,setString同樣是6個,但順序不對,setString中第一個參數(shù)的索引序號是要和SQL語句中是一致的,并不是SQL語句中這里VALUES字段的位置,而應該是SQL語句VALUES中參數(shù)標識符的序號。

改為如下格式就對了:

String logSQL = "insert into tbl_obj(id, obj, type, cont, proposer, operator, date, remark) "
                       + "values(seq_tot.nextval, ?, ?, ?, ?, ?, SYSDATE, ?)";
insertLog = conn.prepareStatement(logSQL);
insertLog.setString(1, trace.getObj());
insertLog.setString(2, trace.getType());
insertLog.setString(3, trace.getCont());
insertLog.setString(4, trace.getProposer());
insertLog.setString(5, trace.getOperator());
insertLog.setString(6, trace.getRemark());
insertLog.execute();

總結

JDBC的這個報錯,提示信息很晦澀,但這個錯誤感覺是屬于那種碰過一次之后,基本下次就能知道錯誤的范圍,排查起來應該也比較順暢了。

例如:

索引是否有問題、代碼中的字段類型和表中字段類型是否一致、代碼中使用的參數(shù)索引和SQL語句中的參數(shù)標識符是否一致(個數(shù)、順序等)。

好了,以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java觀察者模式的深入了解

    Java觀察者模式的深入了解

    這篇文章主要為大家介紹了Java觀察者模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Redis之GEO存儲地理位置信息的使用

    Redis之GEO存儲地理位置信息的使用

    在外賣軟件中的附近的美食店鋪、外賣小哥的距離,打車軟件附近的車輛,交友軟件中附近的小姐姐。我們都可以利用redis的GEO地理位置計算得出。本文就來詳細的介紹一下
    2021-10-10
  • java調用webservice的.asmx接口的使用步驟

    java調用webservice的.asmx接口的使用步驟

    這篇文章主要介紹了java調用webservice的.asmx接口的使用步驟,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • JDK(免安裝)各種版本下載及配置詳細圖文教程

    JDK(免安裝)各種版本下載及配置詳細圖文教程

    這篇文章主要給大家介紹了關于JDK(免安裝)各種版本下載及配置的相關資料,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-07-07
  • Java中包的概念和用法實戰(zhàn)案例分析

    Java中包的概念和用法實戰(zhàn)案例分析

    這篇文章主要介紹了Java中包的概念和用法,結合具體案例形式分析了java包的概念、原理、使用方法及相關操作注意事項,需要的朋友可以參考下
    2019-09-09
  • Java面試題沖刺第十四天--PRC框架

    Java面試題沖刺第十四天--PRC框架

    這篇文章主要為大家分享了最有價值的三道關于PRC框架的面試題,涵蓋內容全面,包括數(shù)據結構和算法相關的題目、經典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 如何調用chatGPT實現(xiàn)代碼機器人

    如何調用chatGPT實現(xiàn)代碼機器人

    最近chatGPT也是非常的火爆,相信大家都看到了,現(xiàn)在提供一種Java調用chatGPT的方法,我們主要通過兩個工具來實現(xiàn),一就是httpclient,二就是hutool,你覺得那種好理解你就用那種即可,今天通過本文給大家分享調用chatGPT實現(xiàn)代碼機器人,感興趣的朋友一起看看吧
    2022-12-12
  • 編譯大型Java項目class沖突導致報錯的解決方案

    編譯大型Java項目class沖突導致報錯的解決方案

    這篇文章給大家盤點編譯大型項目class沖突導致報錯的解決方案,文中通過代碼示例介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2023-10-10
  • 如何使用SpringMVC的消息轉換器設置日期格式

    如何使用SpringMVC的消息轉換器設置日期格式

    這篇文章主要介紹了如何使用SpringMVC的消息轉換器設置日期格式問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • java接口性能優(yōu)化技巧

    java接口性能優(yōu)化技巧

    這篇文章主要為大家介紹了java接口性能優(yōu)化技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07

最新評論