JavascriptProva

domenica 17 luglio 2016

Memorizzazione di date nel database come stringhe.

Campi del database:
  1. _ID
  2. Data
  3. Ora
  4. Tipo di attività
  5. (appropriatezza)

Facciamo solo con i primi quattro.
  public void save(String attivita){
   SQLiteDatabase db=this.getWritableDatabase();
   Date date=new Date();
   long dateMillis=date.getTime();
   ContentValues values=new ContentValues();
   values.put("data", dateMillis);
   values.put("ore", dateMillis);
   values.put("attivita",attivita);
   db.insert("TABELLA", null,values);
  }

  
  public Cursor query(int numero){
   SQLiteDatabase db=this.getWritableDatabase();
   Cursor crs=db.rawQuery("select * from TABELLA where _id="+numero, null);
   crs.moveToFirst();
   return crs;
  }
Fin qui nessun grosso problema...

Il problema sta nel momento in cui io voglia selezionare i records del database in relazione a una certa data, sia essa compresa fra due date o anteriore o posteriore a un'altra data.
Come fare, dal momento che le date sono salvate sotto forma di millisecondi?

Mi si pone la possibilità di salvare le date come stringhe e poter fare il confronto fra date memorizzate in questo formato...

Sfascio tutto...

E riprovo. Come si converte una data in stringa? Presumo con il ToString.


Ecco il codice:
public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  Helper helper=new Helper(this);
  helper.save("Un tubo");
  

 }
 
 class Helper extends SQLiteOpenHelper{

  public Helper(Context context) {
   super(context, "database.db", null, 1);
   
  }

  @Override
  public void onCreate(SQLiteDatabase db) {
   db.execSQL("create table TABELLA(_id integer primary key,data text ,ora text,attivita text)");
   
   
  }
  

  public void save(String attivita){
   SQLiteDatabase db=this.getWritableDatabase();
   Date date=new Date();
   DateFormat df=new SimpleDateFormat("dd/MM/yyyy");
   DateFormat hf=new SimpleDateFormat("hh:mm");
   String dateFormat=df.format(date).toString();
   String hourFormat =hf.format(date).toString();
   ContentValues values=new ContentValues();
   values.put("data", dateFormat);
   values.put("ora", hourFormat);
   values.put("attivita",attivita);
   db.insert("TABELLA", null, values);
  }
  
  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   // TODO Auto-generated method stub
   
  }
  
 }
}
Ho immesso alcuni records.
Ora voglio discriminarli.



Ecco, ho trovato:
public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  Helper helper=new Helper(this);
  Log.d("DATA", helper.query().getString(2));
  

 }
 
 class Helper extends SQLiteOpenHelper{

  public Helper(Context context) {
   super(context, "database.db", null, 1);
   
  }

  @Override
  public void onCreate(SQLiteDatabase db) {
   db.execSQL("create table TABELLA(_id integer primary key,data text,ora text,attivita text)");
   
   
  }
  

  public void save(String attivita){
   SQLiteDatabase db=this.getWritableDatabase();
   Date date=new Date();
   DateFormat df=new SimpleDateFormat("dd/MM/yyyy");
   DateFormat hf=new SimpleDateFormat("hh:mm");
   String dateFormat=df.format(date).toString();
   String hourFormat =hf.format(date).toString();
   ContentValues values=new ContentValues();
   values.put("data", dateFormat);
   values.put("ora", hourFormat);
   values.put("attivita",attivita);
   db.insert("TABELLA", null, values);
  }
  
  public Cursor query(){
   SQLiteDatabase db=this.getWritableDatabase();
   Cursor crs=db.rawQuery("select * from TABELLA where data = '17/07/2016'  ",null);
   crs.moveToFirst();
   return crs;
  }
  
  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   // TODO Auto-generated method stub
   
  }
  
 }
}
Ecco, adesso mi devo esercitare a selezionare per data i records del database. E devo trovare i controlli adeguati.

Nessun commento:

Posta un commento