nested exception is java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 28

时间:2022-09-20 22:53:37
这一组代码的功能是:
接收从移动客户端发来的报文,解析后,根据关键字段id的值,先判断该id在数据库中是否存在,如果存在,则按照id更新其他数据;如果不存在,则作为新的数据插入数据库。

之前更新的功能update方法,一直不起作用,一直想不明白原因,直到学习了另外一个类似的update方法;

之前是因为在add方法中调用update(根据id判断),一直都显示成功,后来才发现,update方法里也写了,id存在就拒绝,当然也是显示成功了。

把那一句删除,再次进入该方法,报错:

nested exception is java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 28

分析了好久:

检查了sql,obj,types字段的对应,没有错,拼写和数量都对应:

1        term_id,

2        area_code,

3        branch_name,

4        loc,

5        admin_id,

6        admin_name,

7        trade_time,

8        trade_date,

9        business_type,

10     trade_type,

11     trade_acc_id,

12     trade_acc_name,

13     trade_accop_id,

14     trade_accop_name,

15     trade_amount,

16     transin_acc_id,

17     transin_acc_name,

18     transin_accop_id,

19     transin_accop_name,

20     data_sum_date,

21     data_update_date,

22     trade_result,

23     trade_result_code,

24     legalman_id,

25     bank_id,

26     bank_name,

27     branch_id

 

 

 

1        Types.VARCHAR,

2        Types.VARCHAR,

3        Types.VARCHAR,

4        Types.VARCHAR,

5        Types.VARCHAR,

6        Types.VARCHAR,

7        Types.VARCHAR,

8        Types.VARCHAR,

9        Types.VARCHAR,

10     Types.VARCHAR,

11     Types.VARCHAR,

12     Types.VARCHAR,

13     Types.VARCHAR,

14     Types.VARCHAR,

15     Types.VARCHAR,

16     Types.VARCHAR,

17     Types.VARCHAR,

18     Types.VARCHAR,

19     Types.VARCHAR,

20     Types.VARCHAR,

21     Types.VARCHAR,

22     Types.VARCHAR,

23     Types.VARCHAR,

24     Types.VARCHAR,

25     Types.VARCHAR,

26     Types.VARCHAR,

27     Types.VARCHAR

到底是哪里出错了呢,索引中丢失 IN 或 OUT 参数:: 28,我这时注意到这里的参数值为28,可是我传的参数只有27个,需要更新的字段也只有27个,这个28是哪里来的呢?


nested exception is java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 28

突然想到,我这个update方法是根据id来更新的,id的值在哪?????

在obj最后一个加上id,在types【】末尾加一组Types.VARCHAR

再次运行,一切OK。

报这个异常的原因就在于,没有传id的值。