无效的数据转换:参数实例50.0 / 100对于请求的转换无效。 ERRORCODE = -4461,SQLSTATE = 42815

时间:2013-07-30 07:51:35

标签: sql jdbc db2

String expression = CHEMICAL_REORDERPOINT + "*" + searchRequest.getReorderPercentage() + "/100)";

之前:

String expression = CHEMICAL_REORDERPOINT + "*" + searchRequest.getReorderPercentage() + "/100)";

searchRequest.getReorderPercentage()在提交值后从浏览器动态生成。 让我们为searchRequest.getReorderPercentage() = 50

取值
so String expression = CHEMICAL_REORDERPOINT*50/100; 

这是在我的应用程序中准备好的JDBC语句中填充的,所以要维护我在以下方式中使用的准备语句规则:

之后:

String expression = CHEMICAL_REORDERPOINT + "*?)"
String str = searchRequest.getReorderPercentage() + "/100";
params.add(str)

这里params是一个列表,迭代参数,并在执行时放在prepare语句的postion参数中。

但现在我得到了例外  无效的数据转换:参数实例50.0 / 100对于请求的转换无效。 ERRORCODE = -4461,SQLSTATE = 42815

请允许任何人帮助我。感谢

2 个答案:

答案 0 :(得分:1)

您的参数化查询字符串应该看起来像“whatever is in CHEMICAL_REORDERPOINT * (? / 100)”,您应该使用setDouble()或setFloat()设置百分比值,而不是字符串。现在你试图告诉DB2将字符串乘以任何东西,这没有多大意义。

答案 1 :(得分:0)

如果我不得不猜测我会说这是一个自动转换问题。

你有类似

的东西
5 * 50.0 / 100

并且有效。

不,你有

50.0 / 100

它失败了。

似乎在第一个中它将所有操作数转换为整数,在第二个中它将它们转换为浮点数。但100不是有效的浮点常数。所以将新输出更改为

50.0 / 100.0

50 / 100