8

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

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

星期一 = 0/1

星期二 = 0/1

. . . . .

星期日 = 0/1。

但这将在DB中生成 7 列。所以我在想是否有人可以帮助我解决这个问题,如果我应该将它存储在一个数组中并检索值以供进一步使用。我正在通过互联网阅读一些示例,但并没有以简单的方式得到它。

4

4 回答 4

10

要在一列中插入 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); 

//   
            }
于 2012-05-21T12:20:58.063 回答
5

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

总共 7 天,所以索引 0=mon, 1=tues, 2=wed, 3=thurs, 4=friday, 5=sat, 6=sunday..等等..

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

于 2012-05-21T12:08:58.367 回答
3

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

它有助于轻松有效地服务于价值观。

于 2013-02-27T13:08:50.693 回答
2

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

于 2012-05-21T12:42:07.447 回答