1

我正在尝试从 Java 应用程序查询 Firebird 数据库。此查询包含 2 个整数变量和 1 个字符串。查询如下所示:

Statement statement = conn.createStatement();

ResultSet rs = statement.executeQuery("select * from table where
  column1 < " + intvariable1 + " and ( 
  column2 > " + intvariable2 +" or column2 = 0) and 
  column3 = '" + stringvariable + "' ";

Rs.next();
syso(rs.getInt(1));

看起来它ResultSet是空的,但是当我使用硬编码的字符串值而不是变量时,我得到了预期的结果。

我也用相同的结果尝试了这个preparedstatements- 它只在没有字符串变量的情况下工作。

任何想法我做错了什么?

编辑:问题解决了!Stringvariable 来自 BLOB 字段,其中包含一些空值。调用修剪功能删除了那些。

4

1 回答 1

0

我注意到在“column3”行中,在开始引号之后和结束引号之前都有一个空格。除非您故意尝试匹配以空格开头和结尾的字符串,否则您将找不到结果。如果没有,请去掉空格:

column3 = '" + stringvariable + "' ";
于 2016-12-01T20:13:31.450 回答