PostgreSQL错误42883 - 使用从字符串转换的int时未定义的函数

时间:2017-10-17 21:10:09

标签: postgresql jdbc

显然,

Select Message From "public".USERS Where ID = '1' 

是完全合法的陈述

是的
Select Message From "public".USERS Where ID = '1' 

事实上,它们是完全相同的。两者之间的唯一区别是第二个是最初

的PreparedStatement的结果
Select Message From "public".USERS Where ID = ? 

并使用ID值1进行参数化。

事实上,当我尝试对要执行的语句进行硬编码时,事情运行得非常好,并且我收到了预期的输出。

通过测试,我发现问题实际上是如果参数最初是一个字符串,则没有问题。所以:

PreparedStatement statement = connection.prepareStatement("Select * from table where ID = ?");  
statement.setString(1, param);

如果param被声明为

,将会起作用
String param = "1";

但是如果你以任何其他方式宣布它,那就不是了 例如,

String param = Integer.toString(1);
String param = String.valueOf(1);
String param = ""+1;

都会导致错误。

我完全不知道A)导致这种特殊错误的原因,以及B)为什么即使将int转换为具有完全相同的字符串值的字符串,也就是原来为int的字符串导致错误。

0 个答案:

没有答案