一段代码

同事在维护一段用于数据库更新操作的代码时发现了一个有趣的错误。原作者在构造SQL语句及参数数组时采用了非常规的格式,导致后续维护者难以察觉问题所在。本文将展示这一奇特的代码案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中的一段代码,不知道是谁写的:

String sql = "UPDATE SAFE SET SAFE_IP_TYPE_ID=?,SAFE_FEEDBACKTYPE_ID=?,SAFE_USERNAME=?,SAFE_PHONE=?,SAFE_ACCOUNT=?,SAFE_REMARK=?,SAFE_HANDLER=?,SAFE_HANDLESTATE_ID=?,SAFE_HANDLE_FLAG=?,SAFE_RESULT=?,safe_ip_dns=?,safe_priority_id=?,safe_count=?,safe_failed_times= ?,safe.safe_review_count = ? ,safe.safe_lasttime=? ,safe.SAFE_BETIMES=? ,safe_change_count=? WHERE SAFE_ID = ?";
Object[] param = { "long",
		String.valueOf(safe.getSafe_ip_type_id()), "long",
		String.valueOf(safe.getSafe_feedbacktype_id()), "string",
		String.valueOf(safe.getSafe_username()), "string",
		String.valueOf(safe.getSafe_phone()), "string",
		String.valueOf(safe.getSafe_account()), "string",
		String.valueOf(safe.getSafe_remark()), "string",
		String.valueOf(safe.getSafe_handler()), "long",
		String.valueOf(safe.getSafe_handlestate_id()), "long",
		String.valueOf(safe.getSafe_handle_flag()), "string",
		String.valueOf(safe.getSafe_result()), "string",
		String.valueOf(safe.getSafe_ip_dns()), "long",
		String.valueOf(safe.getSafe_priority_id()), "long",
		String.valueOf(safe.getSafe_count()), "long",
		String.valueOf(safe.getSafe_failed_times()), "long",
		String.valueOf(safe.getSafe_review_count()), "long",
		String.valueOf(safe.getSafe_lasttime().getTime() / 1000), "long",
		String.valueOf(safe.getSafe_betimes()), "long",
		String.valueOf(safe.getSafe_id()),"long",String.valueOf(safe.getSafe_Chang_count())
		};      
DataBaseUtil.executeUpdate(sql, param)
同事在维护这段代码的时候出了错,他在SQL中加了一个字段,并且在Object[] param中加了参数的赋值: String.valueOf(safe.getSafe_count()), "long" 按说没问题的。 仔细一看,晕倒,原来Object[] param的格式要求是  "类型","值" 而同事按照上面代码的格式写成了 "值","类型"。 原来很搞笑的原作者,在第一行写了一个"类型"后,下面的行都按照"值","(下一个参数的)类型"的格式去写, 这样,原来的  "类型","值", "类型","值",  格式就看起来变成了  "值","类型",  "值","类型", 这么眩晕的创意型代码不知道是哪位仁兄的大作啊,好久没欣赏过这样的代码了,实在是有创意啊!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值