在android的SQLite数据库中插入数组
Posted
技术标签:
【中文标题】在android的SQLite数据库中插入数组【英文标题】:Insert Array in SQLite Database in android 【发布时间】:2012-05-27 22:21:41 【问题描述】:我想在数据库中保存工作日,所以我想通过为每一天分配 int 值来存储它。即
1 -> 已选择,0 -> 未选择。
星期一 = 0/1
星期二 = 0/1
。 . . . .
星期日 = 0/1。
但这会在 DB 中创建 7 列。所以我在想是否有人可以帮助我解决这个问题,如果我应该将它存储在一个数组中并检索值以供进一步使用。我在互联网上阅读了一些示例,但没有以简单的方式获得。
【问题讨论】:
如果您想将数组存储在一列中,然后将您的所有天值放入 json 数组并将其存储到数据库中。 【参考方案1】:要在一列中插入 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);
//
【讨论】:
【参考方案2】:您可以使用二进制整数 1= 已选择 0 =未选择 (1111111) (0000000)
总共 7 天,因此索引 0=周一、1=周二、2=周三、3=周四、4=周五、5=周六、6=周日……以此类推。
这里 1111111 表示全天选择,0000000 全天不选择,0001000 仅选择星期四。
【讨论】:
是的,我知道,但这和我现在做的一样,知道我们是否可以在数据库中使用数组/数组列表,因为我必须使用那些日子来设置警报在我的应用中。 你可以通过这个概念设置闹钟,没什么大不了的。【参考方案3】:我还发现了一种方法,即将您所谓的值转换为 JSON 数组,然后将完整的 JSON 字符串 存储到数据库中的实体/字段中。 p>
它有助于轻松有效地服务于价值观。
【讨论】:
【参考方案4】:创建另一个表,其中包含每天的一列布尔值。通过整数 id 与该表建立关联(使用外键)这是解决问题的关系方式。
【讨论】:
以上是关于在android的SQLite数据库中插入数组的主要内容,如果未能解决你的问题,请参考以下文章
如何在android中将arraylist或vector插入SQLite数据库?
在 Android 中插入 datetime.now SQLite