2010-10-15 132 views
0

我正在为玩具商店制作一个Java应用程序并使用MS-Access数据库。 我使用运算符“LIKE”使用用户的关键字搜索数据库中的产品。在Access中使用LIKE运算符而不是在Java中使用LIKE运算符

E.g.在访问中:

SELECT * FROM tblToy WHERE toyName LIKE '*puppy*' OR toyBrand LIKE '*puppy*' 

这给了我期望的访问结果。

但在Java中,当我运行此同一查询返回null:

String query = "puppy"; 
    sql = "SELECT * FROM tblToy WHERE toyName LIKE '*" + query+"*' "+ 
       "OR toyBrand LIKE '*" + query + "*'"; 
     rs = db.executeQuery(sql); 
     while(rs.next()){ 

      String name = rs.getString("toyName"); 

      return name; 
     } 

     return null; 

谁能帮助我在这?我知道这一定是我现在错过的一些简单的东西,但我不知道该怎么做。希望你们帮忙。

回答

0

我想与Java,你需要逃脱单引号,所以尽量使用\'您所有的单引号,然后尝试%代替*如别人提到的,由于%是通配符SQL。

+0

感谢他现在的作品..你太棒了。 – 2010-10-16 00:33:08

+0

不客气。事实上,我不是那么好,我仍然像你一样学习=)我记得一年前我经历了几乎完全相同的问题,我花了很长时间才弄清楚。我对你的案子犹豫不决,因为当我经历过逃脱单引号时,它在字符串生成中标记了一个错误,但你似乎没有得到那个标志。 – Evan 2010-10-16 00:49:29

+0

是绝对。但我没有得到任何错误,它运作良好。再次感谢。 – 2010-10-16 02:05:21

0

根据您运行查询的位置有两种可能性,通配符*或%。在这种情况下,你需要%

+0

我试过“%”,但那不起作用。 – 2010-10-15 23:42:46