2017-07-29 91 views
0

我正在搜索表中多列中出现的单词(变量)。搜索必须返回找到的单词列的名称。
我可以使用foreach循环单独遍历每列,并在返回的游标不为空时知道该特定列中单词的存在。
问题是如何在SQL查询或rawQuery中使用两个不同的变量(一个用于列名和一个用于单词)。在sql查询中为列名使用变量

我的代码如下:

String[] columnsList = {"col1","col2","col3"}; 
String[] wordsList = {"fireman","camper","builder"}; 
for(String i : wordsList){ 
    for(String j : columnsList){ 
     Cursor wordQuery = myDatabaseHandle.rawQuery("Select * from myTableOne WHERE " + j + " = ?",new String[]{i}); 
     if(!(wordQuery==null)){ 
     Toast.makeText(this,j+"is success",Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

但我无法得到答案。我用一个单独的字符串:

String queryString = "Select * from myTableOne WHERE " + j ; 

,并在查询中,

Cursor WordQuery = myDatabaseHandle.rawQuery(queryString+" = ?",new String[]{i}); 

但是,它只是敬酒所有列的名称。

回答

2

你的错误是在这里:

if(!(wordQuery==null)){ 

光标是不能为null

虽然它可以包含0条记录。
您可以通过使用wordQuery.getCount()

事情是检查它的长度:

if((wordQuery.getCount() > 0)){ 
+1

貌似完美的答案。 –

+1

@IntelliJAmiya谢谢,亲爱的! –

+0

谢谢。但我使用查询,而不是rawQuery,它的工作完美。我不知道光标不能为空。这是一个新的东西了解:)现在我会改变它。 – Dante