逻辑运算符sql查询奇怪的错误

时间:2012-05-15 14:58:04

标签: sql forms sqlite blackberry

我试图通过提供日期范围从我的sqlite数据库中获取结果。 我已经能够通过提供3个过滤器来获取结果

        1. Name (textfield1) 
        2. From (date)(textfield2)
        3. To   (date)(textfield3)

我使用以下代码

将从表单中获取的这些字段值插入到表temp中
        Statement statement6 = db.createStatement("INSERT INTO Temp(date,amount_bill,narration) select date,amount,narration from Bills where name=\'"+TextField1.getText()+"\' AND substr(date,7)||substr(date,4,2)||substr(date,1,2) <= substr (\'"+TextField3.getText()+"\',7)||substr (\'"+TextField3.getText()+"\',4,2)||substr (\'"+TextField3.getText()+"\',1,2) AND substr(date,7)||substr(date,4,2)||substr(date,1,2) >= substr (\'"+TextField2.getText()+"\',7)||substr (\'"+TextField2.getText()+"\',4,2)||substr (\'"+TextField2.getText()+"\',1,2) ");
                    statement6.prepare();
                    statement6.execute();       
                    statement6.close(); 

现在,如果我在表单中为上述过滤器输入以下输入

               1.Ricky
               2.01/02/2012
               3.28/02/2012

完美地获取这些日期范围之间的日期。 但现在我想插入低于和高于这两个日期范围的值。

enter image description here

我已经尝试过使用这段代码。但它没有显示任何结果。我只是想不出错误在哪里

以下代码用于查找日期小于01/02/2012且大于28/02/2012的条目。

          Statement statementVII = db.createStatement("INSERT INTO Temp5(date,amount_rec,narration) select date,amount,narration from Bills where name=\'"+TextField1.getText()+"\' AND substr(date,7)||substr(date,4,2)||substr(date,1,2) < substr (\'"+TextField2.getText()+"\',7)||substr (\'"+TextField2.getText()+"\',4,2)||substr (\'"+TextField2.getText()+"\',1,2) AND substr(date,7)||substr(date,4,2)||substr(date,1,2) > substr (\'"+TextField3.getText()+"\',7)||substr (\'"+TextField3.getText()+"\',4,2)||substr (\'"+TextField3.getText()+"\',1,2)");
                    statementVII.prepare();
                    statementVII.execute();       
                    statementVII.close(); 

有人发出声音,请指导。谢谢。

1 个答案:

答案 0 :(得分:2)

您需要将Or子句与括号一起使用:

WHERE name='....' AND (yourDateField<yourLowerDate OR yourDateField>yourHigherDate)