繁体   English   中英

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

[英]Insert Array in SQLite Database in android

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

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

星期一= 0/1

星期二= 0/1

星期日= 0/1。

但这将在DB中创建7列。 因此,我在考虑是否有人可以将其存储在单个数组中并检索值以备将来使用。 我正在通过互联网阅读一些示例,但没有以简单的方式获得它。

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

其中Total_Score_P1是一个字符串数组

//字符串数组

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 =选定0 =未选定(1111111)(0000000)

总共7天,因此索引0 =星期一,1 =星期二,2 =星期三,3 =星期四,4 =星期五,5 =星期六,6 =星期日等等。

这里1111111表示全天选择,0000000全天未选择,0001000仅星期四被选择。

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

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

创建另一个表,该表每天都有一个列,为布尔值。 通过整数id(使用外键)对此表进行关联这是解决问题的关系方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM