Almacenamiento de una ArrayList de matrices en la base de datos SQLite

Mi pregunta tiene que ver con el almacenamiento de matrices y ArrayLists en SQLite. Tengo un curso de objetos de la siguiente manera:

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

que contiene el ArrayList de Tee donde Tee se ve así:

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};

Cada campo tiene una cantidad de tees asociados y cada tee contiene 2 matrices de enteros. Quiero almacenar una lista de cursos en una base de datos SQLite. Cada fila de la base de datos representará un curso y contendrá los datos del objeto del curso. He investigado esto y encuentro muy poca o demasiada información para ser útil.

Creo que necesito usar un objeto JSON o un BLOB para convertir ArrayLists en algo que se pueda almacenar en SQLite, pero parece que no puedo encontrar la manera de convertir una matriz int en tal cosa (BLOB o JSON Object o JSON Array?) y luego la siguiente lista de Tees en otra cosa (BLOB, etc.)

preguntado el 03 de diciembre de 13 a las 12:12

no cree una columna de blob en la base de datos sqlite porque si inserta una imagen grande significa que creará un problema ... haga una cosa almacene la imagen en sdcard guarde la ruta en sqlite ... busque la operación de cuajada sqlite obtendrá mucho tutorial -

2 Respuestas

Crear varias tablas.

Una tabla ('Curso') contiene el campo 'nombre' y el campo con referencia (campo 'id') a la fila en la tabla 'Tee'.

La tabla 'Tee' contiene los campos 'id', 'name', 'slop', 'rating', 'par' y 'hcp'.

Dado que es imposible almacenar una matriz en una fila de la tabla, puede:

  • convertir matriz en cadena
  • crear un campo para cada elemento en la matriz

    StringBuilder b = nuevo StringBuilder(); for(int i = 0; i < array.length - 1; i++) { if(i != 0) { b.append(","); } b.append(matriz[i]); } String stringArr = b.toString();

Respondido el 03 de diciembre de 13 a las 16:12

Es el proceso de convertir la matriz en una cadena sobre la que estaba preguntando. Más específicamente, a un objeto JSON o un BLOB o algo que ya maneja la conversión y el empaquetado. Podría escribir algo que hiciera la conversión, pero pensé que para eso eran estos JSON y BLOB. - ddk

Tienes que crear el marco para recuperar datos.

Cada curso debe tratarse como un objeto.

  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;
}
}

Y use for loop para insertar datos en la base de datos

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

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



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



    }

Para el almacenamiento de datos PAR y HCP, realice la indexación de la tabla para administrar de manera adecuada su flujo de datos

Respondido el 03 de diciembre de 13 a las 12:12

Me está mostrando cómo poner datos de cadena en una base de datos. Estoy bien con eso. quiero saber como convertir int matriz en algo que se puede almacenar en la base de datos. - ddk

Para eso, debe crear el nuevo nombre de la subtabla como PAR y HCP, agregar la columna de acuerdo con sus requisitos, hacer la indexación desde la tabla principal. Creo que no hay forma de almacenar la lista de matrices directamente en la tabla en sq lite. - Rajith Rajan

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.