微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 如何在sql查询中传递逗号分隔的字符串值?

我创建一个数据库相关的应用

在这个我创建简单的数据库并使用in SQL查询数据库获取值.

我的问题在于我得到了像“2,6,8,9,10”这样的字符串.
首先我将这个字符串拆分并存储在一个arraylist中.用逗号.
在这个arraylist后我与逗号合并,如2,10这个.

我做的很好.
我在查询中使用此字符串来从数据库获取值.
我的疑问是

SELECT tm.icon,tm.topic_no,td.topic_id,td.name FROM topicmaster tm,topicmaster_description td  WHERE td.topic_id =tm.topic_id AND  td.langid='3' AND tm.oraganisationid ='1' AND  td.topic_id in(2,10);

这个.

但当我通过合并字符串时,它看起来像一个

SELECT tm.icon,topicmaster_description td  WHERE td.topic_id =tm.topic_id AND  td.langid='3' AND tm.oraganisationid ='1' AND  td.topic_id in('2,10');

所以我无法运行查询,因为原因中的传递值不同.
在上面的查询工作正常,因为它像ain(2,10)
在第二个它看起来像ain(‘2,10’)
那么该怎么办.
如何从字符串中删除这个’`

首先我分裂字符串

//getTopicFile ArrayList with 
    public  ArrayList<String> getAssignTopicArrayList(String passstring) 
    {
        ArrayList<String> rtnArrayList=new ArrayList<String>();
        try 
        {
            StringTokenizer strTokens = new StringTokenizer(passstring,",");
            while (strTokens.hasMoreElements()) 
            {
                rtnArrayList.add(String.valueOf(strTokens.nextToken()));
            }
        } catch (Exception ex) 
        {
            ex.printstacktrace();
            System.err.println("Error in Fetch ArrayList-->"+ex.toString());
        }
        return rtnArrayList;
    }       
    //getTopicFile ArrayList with

在我合并New String之后

genHelper.showErrorLog("Assign Topic-->"+chapterassignTopicName);
        ArrayList<String> getTopicList=genHelper.getAssignTopicArrayList(chapterassignTopicName);

        String passConcat = "";
        for (int i = 0; i < getTopicList.size(); i++) 
        {
            System.out.println("Topic List--->"+getTopicList.get(i));

            if(getTopicList.size()==1)
            {
                passConcat=passConcat.concat(String.valueOf(getTopicList.get(i)));
            }
            else
            {
                if(getTopicList.size()-1 == i)
                {
                    System.err.println("value if --> " + i);
                    passConcat=passConcat.concat(String.valueOf(getTopicList.get(i)));
                }else {
                    System.err.println("value else--> " + i);
                    passConcat=passConcat.concat(String.valueOf(getTopicList.get(i)).concat(","));
                }
            }
        }

        genHelper.showErrorLog("PassConcat String-->"+passConcat);

然后我得到了New String并在下面传递查询

String topicQuery="SELECT tm.icon,topicmaster_description td  WHERE td.topic_id =tm.topic_id AND  td.langid='"+LanguageActivity.languageId+"' AND tm.oraganisationid ='"+genHelper.loadPreferences(String.valueOf(R.string.sharePrefin_Login_organizationid))+"' AND  td.topic_id in('"+passConcat+"')";

解决方法

不应该

String topicQuery="SELECT tm.icon,topicmaster_description td  WHERE td.topic_id =tm.topic_id AND  td.langid='"+LanguageActivity.languageId+"' AND tm.oraganisationid ='"+genHelper.loadPreferences(String.valueOf(R.string.sharePrefin_Login_organizationid))+"' AND  td.topic_id in('"+passConcat+"')";

String topicQuery="SELECT tm.icon,topicmaster_description td  WHERE td.topic_id =tm.topic_id AND  td.langid='"+LanguageActivity.languageId+"' AND tm.oraganisationid ='"+genHelper.loadPreferences(String.valueOf(R.string.sharePrefin_Login_organizationid))+"' AND  td.topic_id in("+passConcat+")";

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐