Java 如何在jdbc firebird连接上向SQL查询添加字符串变量

Java 如何在jdbc firebird连接上向SQL查询添加字符串变量,java,sql,jdbc,firebird,jaybird,Java,Sql,Jdbc,Firebird,Jaybird,我试图从Java应用程序中查询Firebird数据库。此查询包含2个整数变量和1个字符串。查询如下所示: Statement statement = conn.createStatement(); ResultSet rs = statement.executeQuery("select * from table where column1 < " + intvariable1 + " and ( column2 > " + intvariable2 +" or colu

我试图从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));
Statement Statement=conn.createStatement();
ResultSet rs=statement.executeQuery(“从表中选择*,其中
第1列<“+intvariable1+”和(
第2列>“+intvariable2+”或第2列=0)和
第3列=“+stringvariable+”;
Rs.next();
syso(rs.getInt(1));
ResultSet
似乎是空的,但是当我使用硬编码字符串值而不是变量时,我得到了预期的结果

我还用
preparedstatements
尝试了这一点,结果是相同的——它只在没有字符串变量的情况下工作

你知道我做错了什么吗

编辑:问题解决了!Stringvariable来自BLOB字段,其中有一些空值。调用trim函数删除了这些值。

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

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

column3 = '" + stringvariable + "' ";

似乎是通过变量传递数据的问题。查询中的字符串值周围有一个前导空格和一个尾随空格。请,请学习使用准备好的语句。请显示使用的值,以及希望返回的表中的数据。请使用准备好的语句(并正确使用!),不要将值连接到查询字符串中。似乎是通过变量传递数据的问题。您的查询中字符串值周围有一个前导空格和一个尾随空格。请,请学习使用准备好的语句。请显示使用的值,以及希望返回的表中的数据。请使用准备好的语句语句(并正确使用!),不要将值连接到查询字符串中。这是故意的,因为当我在手机上写这篇文章时,似乎很难看出它们之间的区别“和”。猜到最后,这样的误读更严重。编辑它。这是故意的,因为当我在手机上写这篇文章时,似乎很难看出“和”之间的区别。猜到最后,这样的误读更严重。编辑它