在android中的SQLite数据库中插入数组

时间:2012-05-21 12:03:03

标签: android sqlite arraylist

我想在数据库中保存工作日,所以我想通过为每天分配int值来存储它。即

1 - >已选择, 0 - >未选中。

星期一= 0/1

星期二= 0/1

。 。 。 。

星期日= 0/1。

但这会在 DB 中生成7列。所以我想如果我将它存储在一个数组中并检索值以供进一步使用,是否有人可以帮助我。我正在通过互联网阅读一些例子,但没有轻易得到它。

4 个答案:

答案 0 :(得分:10)

要在一列中插入7个值,您可以像这样使用逗号分隔符

其中Total_Score_P1是一个字符串数组

// string array

String[]  Total_Score =  new String[] { p1e1,p1e2,p1e3,p1e4,p1e5,p1e6 };


// Convderting it into a single string 

String result_ScoreP1 = ("" + Arrays.asList(Total_Score_P1)).
             replaceAll("(^.|.$)", "  ").replace(", ", "  , " );

result_ScoreP1将是

//输出

result_ScoreP1 = "p1e1,p1e2,p1e3,p1e4,p1e5,p1e6";

将其作为单个字符串插入数据库中 当再次检索它时,在

等部分中断

//一个字符串数组列表

//查询已解雇

public ArrayList<String> rulTable(String id) {
        // TODO Auto-generated method stub
        ArrayList<String> Ruleob = new ArrayList<String>();

        Cursor c_rule;

        try
        {
            c_rule = db.query(NameTable, new String[]{
                    columns1        
            },
            Rule_COurseID + "=" + id ,
                              null, null, 
                              null, null, null);

            c_rule.moveToFirst();

            // if there is data available after the cursor's pointer, add
            // it to the ArrayList that will be returned by the method.
            if (!c_rule.isAfterLast())
            {
                do
                {

                    Ruleob.add(c_rule.getString(0));

                }
                while (c_rule.moveToNext());
            }

            // let java know that you are through with the cursor.
            c_rule.close();
        }
        catch(Exception e)
        {


        }
        return Ruleob;


    }


//list to get elements 

 ArrayList<String>  ListOne = new ArrayList<String>();

ArrayList<String> row ;

    try{
// received values
        row = db.TheTable(id);
        String r1 = row .get(0);

}

catch(Exception e)

{

}


 StringTokenizer st2 = new StringTokenizer(r1, "||");

            while(st2.hasMoreTokens()) {
            String Desc = st2.nextToken();
               System.out.println(Desc+ "\t" ); 
            ListOne.add(Desc); 

//   
            }

答案 1 :(得分:5)

你可以使用二进制整数1 =选择0 =未选中(1111111)(0000000)

总共七天所以索引0 =星期一,1 =星期二,2 =星期三,3 =星期四,4 =星期五,5 =星期六,6 =星期日......依此类推......

此处1111111表示全天选中,0000000全天未选中,0001000仅选择星期四。

答案 2 :(得分:3)

我还发现了一种方法,即将您所谓的值转换为 JSON数组,然后将完整的 JSON字符串存储到数据库中的实体/字段。

它有助于轻松有效地提供价值。

答案 3 :(得分:2)

创建另一个表,其中包含每天的列,布尔值。通过整数id(使用外键)与此表建立关联这是解决问题的关系方式。