我正在尝试从 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
具有相同的结果 - 它仅在没有字符串变量的情况下工作。
知道我做错了什么吗?
编辑:问题已解决! String 变量来自 BLOB 字段,其中包含一些空值。调用修剪函数删除了那些。
最佳答案
我注意到在“column3”行中,在开盘报价之后和收盘报价之前有一个空格。除非您故意尝试匹配以空格开头和结尾的字符串,否则您将找不到结果。如果没有,请剪掉空格:
column3 = '" + stringvariable + "' ";
关于java - 如何将字符串变量添加到 jdbc firebird 连接上的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40919504/