接收从移动客户端发来的报文,解析后,根据关键字段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是哪里来的呢?
突然想到,我这个update方法是根据id来更新的,id的值在哪?????
在obj最后一个加上id,在types【】末尾加一组Types.VARCHAR
再次运行,一切OK。
报这个异常的原因就在于,没有传id的值。