动态内容没什么可说的,主要说的是如何返回存储过程里受影响的行数
在Mysql中ROW_COUNT()返回前一个SQL进行UPDATE,DELETE,INSERT操作所影响的行数。SELECT 影响的就用FOUND_ROWS()
BEGIN
SET @strSql = CONCAT('INSERT INTO `chargingPole`.`tb_electricPrice`(
`tb_electricPrice`.tb_electircGroup_eg_id,
`tb_electricPrice`.ep_start,
`tb_electricPrice`.ep_end,
`tb_electricPrice`.ep_price
) ');
SET @strSql = CONCAT(@strSql,arg_select);
PREPARE s1 FROM @strSql;
EXECUTE s1;
-- 只能放在这里,放在DEALLOCATE语句后就只返回-1 --
SELECT ROW_COUNT() INTO arg_affectRows;
DEALLOCATE PREPARE s1;
END
Java代码
try {
CallableStatement cs = conn.prepareCall(sql);
cs.setString("arg_select", buffer.toString());
cs.registerOutParameter("arg_affectRows", Types.INTEGER);
cs.executeQuery();
int result = cs.getInt("arg_affectRows");
if (result == (length + 1)) {
back = "success";
} else {
back = "failed";
}
} catch (Exception e) {
e.printStackTrace();
}