Inserire record multipli

di il
5 risposte

Inserire record multipli

Ciao voglio inserire più record con la data. Cioè, se,
textview.getText().toString().equals ("3")
voglio inserire 3 record. Cerco di spiegarmi meglio: ad esempio data di inizio: 2010-01-01, ho bisogno di inserire 3 record con 3 mesi successivi, come segue: 2010-01-01, 2010-02-01, 2010-03-01
Pensavo ad un ciclo for, ma come potrei impostarlo?
Così riesco ad inserire solo un record:

SQLiteDatabase db = mHelper.getWritableDatabase();
 GregorianCalendar dateAndTime = (GregorianCalendar) GregorianCalendar.getInstance();
 ContentValues cv = new ContentValues();
 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
 String strDate = sdf1.format(dateAndTime.getTime());

 cv.put(MyTable.DATE, strDate);
 db.insert(MyTable.TABLE_NAME, null, cv);
 db.close();
        }

5 Risposte

  • Re: Inserire record multipli

    La classe Calendar, da cui deriva GregorianCalendar, offre il metodo , che ti permette di sommare ad una data una certa quantità; per aggiungere un mese, ad esempio, puoi fare così:
    
    dateAndTime.add(Calendar.MONTH, 1);
    
    Se sai quanti record devi inserire allora puoi fare tutto tramite un ciclo.
  • Re: Inserire record multipli

    Si, il ciclo for era quello che pensavo, ma voglio spiegarti nel dettaglio cosa voglio ottenere:
    In questa alertDialog ho una lista di stringhe, in base alla scelta fatta devo inserire un numero di record con la data:
    
    public void Dialog_Lista_UM(View v) {
    		final CharSequence[] items = {
    				getString(R.string.c01),//2volte
    				getString(R.string.c1),//3 volte
    				getString(R.string.c2),//4 volte
    				getString(R.string.c3),//5 volte
    				getString(R.string.c4),//ecc.....
    				getString(R.string.c5),
    				getString(R.string.c6),
    				getString(R.string.c7),
    				getString(R.string.c8),
    				getString(R.string.c9),
    				getString(R.string.c10),
    				getString(R.string.c11),	
    				getString(R.string.c12),	
    				getString(R.string.c13),	
    				getString(R.string.c14),	
    				getString(R.string.c15),
    				getString(R.string.c16),
    				getString(R.string.c17),
    				getString(R.string.c18),
    				getString(R.string.c19),
    				getString(R.string.c20),
    				getString(R.string.c21),
    				getString(R.string.c22)
    			
    		};
    
    		AlertDialog.Builder builder = new AlertDialog.Builder(this);
    		builder.setTitle(getString(R.string.c_title));
    		builder.setIcon(R.drawable.ic_launcher);
    		builder.setItems(items, new DialogInterface.OnClickListener() {
    		public void onClick(DialogInterface dialog, int item) {
    			scadenza.setText(items[item]);
    		    
    		}
    		});
    		AlertDialog alert = builder.create();
    		alert.show();
    	}
    
    come faccio capire al ciclo for quanti record inserire in base alla scelta fatta?
  • Re: Inserire record multipli

    Premesso che non è molto elegante usare N stringhe per fornire delle possibilità (potresti usare, ad esempio, una EditText con opportuni vicoli in modo da ottenere solo i valori ammissibili), in ogni caso se hai un valore numerico sotto forma di stringa puoi convertirlo in un numero intero attraverso il metodo Integer.parseInt()


    Sent from my iPhone using Tapatalk
  • Re: Inserire record multipli

    Dunque, ci sono quasi.
    ti spiego: controllo se come data iniziale è stato scelto l'ultimo giorno del mese
    boolean lastDay = dateAndTime.get(GregorianCalendar.DAY_OF_MONTH) == dateAndTime.getActualMaximum(GregorianCalendar.DAY_OF_MONTH);
    
    poi
    //converto il mese scelto in intero per il ciclo
    int numeroMese = Integer.parseInt(scadenza.getText().toString());
    faccio il ciclo for
    
     for (int i = 0; i < numeroMese; i++) {
    	if (lastDay)//controllo se è stato scelto l'ultimo del mese e setto il calendario al massimo
             {
     dateAndTime.set(GregorianCalendar.DAY_OF_MONTH, dateAndTime.getActualMaximum(GregorianCalendar.DAY_OF_MONTH));
             }
    	String strDate = sdf1.format(dateAndTime.getTime());
    			dateAndTime.add(Calendar.MONTH, 1);							 
    			cv.put(MyTable.DATA, strDate);							
    			db.insert(MyTable.TABLE_NAME, null, cv);             
         }
    
    ho fatto il controllo sulla data iniziale scelta perchè, se viene scelto il giorno 28 o il 31 ci saranno problemi.....

    Aggiungo il mese al calendario ma viene inserito un solo record, dove sbaglio? grazie
  • Re: Inserire record multipli

    Ho risolto grazie
Devi accedere o registrarti per scrivere nel forum
5 risposte