2012-05-21 18 views
8

Quiero guardar los días de la semana en la base de datos, así que pensé en almacenarlo asignando valor int a cada día. es decir,Insertar matriz en la base de datos SQLite en android

-> Seleccionado, -> No seleccionado.

Lunes = 0/1

Martes = 0/1

. . . . .

Domingo = 0/1.

Pero esto hará 7 columnas en DB. Así que pensé que si alguien podía ayudarme con esto, debería almacenarlo en una única matriz y recuperar los valores para su uso posterior. Estaba leyendo algunos ejemplos a través de Internet, pero no lo obtuve de una manera fácil.

+1

si desea almacenar una matriz en una columna, coloque el valor de todos los días en una matriz json y guárdela en la base de datos. –

Respuesta

10

7 Para insertar valores en una columna se puede utilizar como separador de coma este

donde Total_Score_P1 es una matriz de cadenas

// cadena de gama

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 habrá

// salida de este

result_ScoreP1 = "p1e1,p1e2,p1e3,p1e4,p1e5,p1e6"; 

insertarlo como una única cadena de base de datos y cuando recuperarlo de nuevo romper en piezas como

// una lista matriz de cadenas

// consulta disparó

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

// 
      } 
5

Puede utilizar un entero binario 1 = seleccionado 0 = No seleccionado (1.111.111) (0.000.000)

total de siete días para el índice 0 = lun, 1 = mar, 2 = casarse, 3 = jue., 4 = viernes, 5 = sáb, 6 = domingo ... y así sucesivamente ...

aquí 1111111 significa todo el día seleccionado, 0000000 todo el día no seleccionado, 0001000 solo jueves está seleccionado.

+0

yah, lo sé, pero será lo mismo que ahora, cualquier idea si podemos usar array/arraylist en DB ya que tengo que usar esos días para configurar Alarm ON en mi aplicación. – Harpreet

+0

puede configurar la alarma según este concepto, no es un gran problema. –

2

Crear otra tabla con una columna para cada día, valor booleano. Haga una asociación a esta tabla por ID entero (use una clave externa) Esta es la forma relacional de resolver el problema.

3

También he descubierto una manera de decir, convertir los llamados valores a una matriz JSON y luego almacenar la completa JSON cadena a una entidad/campo en la base de datos.

Ayuda a servir los valores de manera fácil y efectiva.

Cuestiones relacionadas