在sql查询中使用变量作为列名

时间:2017-07-29 07:24:40

标签: java android database sqlite android-sqlite

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

我的代码如下:

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});

但是,它只是烘烤所有列的名称。

1 个答案:

答案 0 :(得分:2)

您的错误在这里:

if(!(wordQuery==null)){

光标永不为空

但它可以包含0条记录 您可以使用wordQuery.getCount()

检查其长度

类似的东西:

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