在SQLite数据库中存储数组的ArrayList

时间:2013-12-03 12:28:35

标签: java android json sqlite arraylist

我的问题与在SQLite中存储数组和ArrayLists有关。我有一个对象课程如下:

public class Course {
    private String name;
    private ArrayList<Tee> tees;

其中包含Tee的ArrayList,其中Tee如下所示:

public class Tee {
    private String Name;
    private int Slope;
    private double Rating;
    private int[] Par={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    private int[] HCP={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

每个课程都有许多与之相关的T恤,每个Tee包含2个整数数组。我想在SQLite数据库中存储一个课程列表。数据库的每一行都代表一个课程并包含课程对象数据。我对此进行了研究,发现信息太少或太多都无济于事。

我认为我需要使用JSON对象或BLOB将ArrayLists转换为可以存储在SQLite中的东西,但我似乎无法找到将int数组转换为这样的东西的方法(BLOB或JSON对象或JSON数组?)然后将后续T恤列表转换成另一个东西(BLOB等)

2 个答案:

答案 0 :(得分:1)

创建几个表。

一个表('Cource')包含字段'name'和带引用('id'字段)的字段到表'Tee'中的行。

表'Tee'包含字段'id','name','slop','rating','par'和'hcp'。

由于无法将数组存储在表格行中,您可以:

  • 将数组转换为字符串
  • 为数组

    中的每个项创建一个字段

    StringBuilder b = new StringBuilder();     for(int i = 0; i&lt; array.length - 1; i ++){         if(i!= 0){             在b.append( “”);         }         在b.append(阵列[I]);     }     String stringArr = b.toString();

答案 1 :(得分:0)

您必须创建用于检索数据的框架。

你应该像对待一个对象一样对待每门课程。

  public class Tee {

    private String Name;
    private int Slope;

    private double Rating;
    private int[] Par={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    private int[] HCP={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

    public Tee(String name,int slope,double Rating,int[] par,int[] hcp)
    {

     this.name=name;
     this.slope=slope;
     this.Rating=rating;
     this.PAR=par;
     this.HCP=hcp;
   }

public String GetName()
{
return this.name;
}
....

public int[] GetHCP()
{
return this.HCP;
}
}

使用for循环将数据插入数据库

for(int i=0;i<size();i++)
    {
        ContentValues values=new ContentValues();

        values.put("name", "data");



        long l=sdb.insert(TAble name, null, values);



    }

对于PAR和HCP数据存储,请执行表索引以便管理数据流