当前位置: 首页 > 知识库问答 >
问题:

查询sqlite数据库有outofboundException

赫连开畅
2023-03-14

我有一个ArrayList,我试图将其转换为String[],以便查询数据库,但我得到了OutofBoundException,我不知道问题出在哪里?

将arraylist转换为String[]:

String[] idsArray = new String[selectedTopicIds.size()];
    idsArray = selectedTopicIds.toArray(idsArray);
    for (int i = 0; i < selectedTopicIds.size(); i++) {
        idsArray[i] = selectedTopicIds.get(i);
    }

然后我使用游标查询:

Cursor cursor = myDb.query(Util.TABLE_NAME,
            null,
            Util.KEY_TOPIC + "=?",
            idsArray,
            null,
            null,
            null);
if (cursor.moveToFirst()) {
        do {
            Word word = new Word();
            word.setId(cursor.getInt(0));
          
            wordList.add(word);

        } while (cursor.moveToNext());
    }
    cursor.close();

arraylist和String[]从索引0到34都必须有35个元素

我不明白问题出在哪里?

共有1个答案

梁丘书
2023-03-14

是否试图将列util.key_topic与数组IDSARRay的项匹配?
如果是这样,则不应使用运算符=而是中的运算符并构造方法query()选择参数,以便包含与IDSARRay项数相同的占位符。

一种更简单的方法是创建一个逗号分隔的idsarray所有项的列表,类似于“,1,2,3”arrays.tostring():

String ids = Arrays.toString(idsArray).replaceAll("[\\[\\]]", ",").replace(" ", "");

并使用操作符,比如:

Cursor cursor = myDb.query(
    Util.TABLE_NAME,
    null,
    "? LIKE '%,' || " + Util.KEY_TOPIC + " || ',%'",
    new String[] {ids},
    null,
    null,
    null
);

 类似资料:
  • 我试图做的是查询并在游标中返回vehicle\u implement表中的所有列及其左侧的所有表,通过图中所示的外键连接。在vehicle\u implement中有一些null implement\u id,我仍然需要这些行。没有,也不会有任何空的vehicle\u id。我认为,当implement\u id为null时,可能无法从implement表左侧的表中返回任何内容,这会阻止我获取所需

  • 问题内容: 我正在将SQLAlchemy用作python项目的ORM。我创建了很少的模型/架构,并且工作正常。现在,我需要查询现有的MySQL数据库,而不仅仅是select语句,不能插入/更新。 如何围绕该现有数据库的表创建包装器?我已经简短地阅读了sqlalchemy文档和SO,但是找不到任何相关的内容。所有人都建议执行方法,在这里我需要编写原始sql查询,而我想以与使用SA模型相同的方式使用S

  • 问题内容: 我是否需要为SQLite安装驱动程序,或者查询是否有问题? 该示例查询: 问题答案: 是的,您需要安装与数据库后端匹配的驱动程序。 关于“ BaseX ”的(非常好的)文档,在“ SQL模块”部分中 : 该模块使用JDBC连接到SQL Server。因此,您的JDBC驱动程序也需要添加到类路径中。如果使用BaseX的完整发行版,则可以将驱动程序复制到lib目录中。例如,要连接到MySQ

  • 然而,敬虔加上知足的心便是大利了,因为我们没有带什么到世上来,也不能带什么去,只要有衣有食,就当知足。但那些想要发财的人,就陷在迷惑、落在网罗和许多无知有害的私欲里,叫人沉在败坏和灭亡中。贪财是万恶之根。有人贪恋钱财,就被引诱离了真道,用许多愁苦把自己刺透了。(1 TIMOTHY 6:6-10) SQLite数据库 SQLite是一个小型的关系型数据库,它最大的特点在于不需要服务器、零配置。前面的

  • 问题内容: 在我的SQLite数据库管理器中,我可以查询以下内容: 这个查询从2012年7月的名为“ tripmileagetable”的表中返回了里程表总和,但是我想在android查询中编写此代码。 但是我不知道如何在database.query()方法中建立此查询,有什么可以帮助吗? 问题答案: