我正在使用预准备语句用各种小字符串加载我的数据库,看来java会自动修剪它们。当我尝试加载值“”(单个空格)时,它最终成为数据库中的空白字符串。多个空格具有相同的结果,因此它似乎是修剪。
我没有在文本上调用任何.trim(),我只是这样:
cmd.setString(3, " ");
加载我的一个参数。否则,一切正常,只有空格似乎有任何问题。因为我在一个序列中进行了很多查询,所以我必须使用预准备语句,否则效率太低,所以我不能只手动加载sql语句。
有什么选择可以解决这个问题吗?或某种解决方法?
答案 0 :(得分:0)
java.sql的规范没有确定驱动程序必须执行trim()操作。但为了以防万一你可以试试以下吗?
cmd.setNString(3, " ");
答案 1 :(得分:0)
你可以尝试一下。
String s= new String(" ");
cmd.setBytes(3,s.getBytes(s));
检查是否有帮助。
答案 2 :(得分:0)
在mysql中调用存储过程时遇到了类似的问题。但事实证明,如果你从mysql运行它:
select ' ' = '';
返回(1)true。
因此,我的存储过程报告为空字符串,但存储过程确实获得了带空格的字符串。
要修复,我必须使用LIKE检查空字符串或检查char长度是否为0。