Java 如何从游标检索字符串数组

Java 如何从游标检索字符串数组,java,android,cursor,getstring,Java,Android,Cursor,Getstring,我有一个游标,称为passableCursor,包含多个字段,但是一个字段Components包含多个值,我无法从中获取所有值 从名称检索的示例 Log.d("recipeName", passableCursor.getString(passableCursor.getColumnIndex("name"))); 游标结构示例 name-> name1 description -> description1 ingredients -> ingredient1, ing

我有一个游标,称为passableCursor,包含多个字段,但是一个字段Components包含多个值,我无法从中获取所有值

从名称检索的示例

Log.d("recipeName", passableCursor.getString(passableCursor.getColumnIndex("name")));
游标结构示例

name-> name1

description -> description1

ingredients -> ingredient1, ingredient2, ingredient3.
我一直在使用getString作为名称和描述字段。然而,我正在努力从配料中获取价值。似乎没有获得getStringArray方法。

这里有一种方法:

    SQLiteDatabase db  =null;//Initialize this first
    Cursor cursor = db.rawQuery("your query", null);//Replace with your query(e.g. SELECT FROM table WHERE something=2)
    String preChanged = cursor.getString(cursor.getColumnIndex("row_name"));//Replace row name with your row name
    String[] finalR = preChanged.split(",");//Can be changed to parts
    //String[] finalR = new String[parts.length];
    //for(int i = 0; i < parts.length; i++){
    //    finalR[i] = parts[i];//This for-loop is if you have special needs. If you want to convert the String to a different type(integer, boolean, etc), or you want to make sure it contains/does not contain something.
    //}//Uncomment if needed

    //Now, this needs a special compression method, to ensure correct format;
    //raw is the raw array, continuing from up above we use finalR to make sure you as a reader understand the context

    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < finalR.length; i++) {
        if(i != finalR.length - 1)
            builder.append(finalR[i] + ",");
        else
            builder.append(finalR[i]);
    }
这也可以转换为一系列方法

解释其工作原理:

在这种情况下,1获取原始数组inputString

2创建一个字符串,用、、分隔不同的字符串,。对于可能存在逗号的较长字符串,您可能需要考虑向逗号添加反斜杠,并在\、两个反斜杠上拆分,使java作为实际反斜杠登记,而不是逃逸字符

。 3将字符串保存到数据库中

4加载字符串

它在,,处将绳子分开,给你几段。这是阵列,应该假设您已采取预防措施保护系统不受字符串内逗号的影响

6可选:通过删除某些内容、添加某些内容、添加对markupreplace[链接文本]的支持来优化字符串数组http://example.com 使用HTML代码,根据需要更改typestring->integer

笔记 这是基本草案。这允许您将基本阵列保存到数据库,并在不创建多行的情况下恢复它。如果在字符串数组中使用逗号保存文本,或任何可能导致SQL注入的字符,则可能需要对其进行细化


可以对其进行优化,使其适用于任何其他类型的数组,例如长数组、整数数组或布尔数组,但需要保存的是sameit必须压缩为字符串,但您可以添加。解析[Type]输入将其转换为所需类型的数组

选项1:为成分创建单独的表。选项2:将成分的字符串数组转换为字符串(例如JSON、CSV),并将该字符串存储在列中。我目前正在执行前者,但我只是想知道是否有一个方法我遗漏了ongetString只返回数组中的第一个元素,所以split不是solutiongetString,而是从SQL表中的列获取字符串。它使用compressionlast代码段将整个数组压缩为一个字符串,该字符串位于一行中。这就是为什么这需要两个组件。但作为回报,每个数组只需要一行。如果一行包含this is one string、this is one和第三个数组元素,它会在代码中的逗号处将其拆分,但在SQL中不会拆分,从而将三个不同的部分推到同一个数组中。然后可以对该数组进行优化、显示,您可以对其执行任何操作。