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
请允许任何人帮助我。感谢
答案 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