我想将工作日保存在数据库中,所以我想通过为每一天分配 int 值来存储它。IE
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=mon, 1=tues, 2=wed, 3=thurs, 4=friday, 5=sat, 6=sunday..等等..
这里 1111111 表示选择全天,0000000 全天未选择,0001000 仅选择星期四。
我还发现了一种方法,即将您所谓的值转换为JSON 数组,然后将完整的JSON 字符串存储到数据库中的实体/字段。
它有助于轻松有效地服务于价值观。
创建另一个表,其中包含每天的列,布尔值。通过整数 id 与该表建立关联(使用外键)这是解决问题的关系方式。