如何防止发送到数据库的字符串参数不断修剪空格?

时间:2011-10-23 23:21:02

标签: java mysql

我正在使用预准备语句用各种小字符串加载我的数据库,看来java会自动修剪它们。当我尝试加载值“”(单个空格)时,它最终成为数据库中的空白字符串。多个空格具有相同的结果,因此它似乎是修剪。

我没有在文本上调用任何.trim(),我只是这样:

cmd.setString(3, " ");

加载我的一个参数。否则,一切正常,只有空格似乎有任何问题。因为我在一个序列中进行了很多查询,所以我必须使用预准备语句,否则效率太低,所以我不能只手动加载sql语句。

有什么选择可以解决这个问题吗?或某种解决方法?

3 个答案:

答案 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。