Visualizzazione dei risultati da 1 a 9 su 9

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    31

    Inserire record multipli

    Ciao, voglio inserire dei record multipli nel database, con la relativa data, 1 record ogni mese. In pratica l'utente sceglie la data di inizio (per esempio 11/04/2014) e la data di fine (per esempio 11/12/2014), quindi, in questo caso, devono essere inseriti 9 record.
    Dopo un lungo lavoro sono riuscito a creare questo codice, ma ha un problema, se prendiamo l'esempio scritto sopra non vengono inseriti 9 record, ma 7, vengono saltati il primo e l'ultimo.

    Spero di avere spiegato bene e grazie per l'aiuto.
    codice:
    
    
    codice:
    public void InsRecords(){
        SQLiteDatabase db = mHelper.getWritableDatabase();
        ContentValues cv = new ContentValues();
    
        if (mRadioGroup.getCheckedRadioButtonId() == R.id.radio){
            SimpleDateFormat sdf1 = new SimpleDateFormat( "yyyy-MM-dd" );
    
            for(int i=0; dateAndTime.getTime().before(dateAndTime1.getTime()); i++) 
            {
                dateAndTime.add(Calendar.MONTH, 1);
               
                if (dateAndTime.getTime().before(dateAndTime1.getTime())){
                     String strDate = sdf1.format(dateAndTime.getTime());
                     cv.put(eTable.DATE, strDate);
                     db.insert(eTable.TABLE_NAME, null, cv);
                }
            }
            db.close();
        }



    Ultima modifica di GffJkc; 11-04-2014 a 18:58

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Questo è un modo semplice e corretto per farlo:

    codice:
    import java.text.*;
    import java.util.*;
    
    public class Prova {
        public static void main(String[] args) {
            GregorianCalendar c1 = new GregorianCalendar(2014, Calendar.APRIL, 11);
            GregorianCalendar c2 = new GregorianCalendar(2014, Calendar.DECEMBER, 11);
            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
    
            while (c1.compareTo(c2) <= 0) {
                System.out.println(sdf1.format(c1.getTime()));
                c1.add(Calendar.MONTH, 1);
            }
        }
    }

    Output:
    2014-04-11
    2014-05-11
    2014-06-11
    2014-07-11
    2014-08-11
    2014-09-11
    2014-10-11
    2014-11-11
    2014-12-11
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    31
    ho fatto come dici tu, in pratica è la stessa cosa....ma resta il fatto che il primo record e l'ultimo non viene registrato...ecco il mio metodo:
    codice:
     GregorianCalendar dateAndTime = (GregorianCalendar) GregorianCalendar.getInstance();
    GregorianCalendar dateAndTime1 = (GregorianCalendar) GregorianCalendar.getInstance();
    public void InsRecords(){
        SQLiteDatabase db = mHelper.getWritableDatabase();
        ContentValues cv =newContentValues();
    
        if(mRadioGroup.getCheckedRadioButtonId()== R.id.radio){
            SimpleDateFormat sdf1 =newSimpleDateFormat("yyyy-MM-dd");
    
                while (dateAndTime.compareTo(dateAndTime1) <= 0){
                 dateAndTime.add(Calendar.MONTH, 1);
               
                if(dateAndTime.getTime().before(dateAndTime1.getTime())){
                     String strDate = sdf1.format(dateAndTime.getTime());
                     cv.put(eTable.DATE, strDate);
                     db.insert(eTable.TABLE_NAME,null, cv);
                }
            }
            db.close();
        }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da GffJkc Visualizza il messaggio
    ho fatto come dici tu, in pratica è la stessa cosa....
    No, non è la stessa cosa del mio ... guarda bene. Innanzitutto fai un doppio test, nel while e nel if (perché?) e poi comunque incrementi il mese prima dell'uso (quindi la partenza la salti sicuramente)!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    31
    Scusa, ma queste date mi stanno facendo impazzire..
    Ora sono a questo punto, ho tolto l'if dopo il ciclo while ed il risultato è che il primo record non viene inserito ma ne viene aggiunto uno in più e cioè se dò come data di partenza il 01/01/2014 e come data finale 01/04/2014 vengono inseriti i record nei mesi Feb, Mar, Apr e Maggio:
    codice:
    GregorianCalendar dateAndTime =(GregorianCalendar)GregorianCalendar.getInstance();
    GregorianCalendar dateAndTime1 =(GregorianCalendar)GregorianCalendar.getInstance();
    publicvoidInsRecords(){
        SQLiteDatabase db = mHelper.getWritableDatabase();
        ContentValues cv =newContentValues();
    
        if(mRadioGroup.getCheckedRadioButtonId()== R.id.radio){
            SimpleDateFormat sdf1 =newSimpleDateFormat("yyyy-MM-dd");
    
            while(dateAndTime.compareTo(dateAndTime1)<=0){
                 dateAndTime.add(Calendar.MONTH,1);
               
               
                     String strDate = sdf1.format(dateAndTime.getTime());
                     cv.put(eTable.DATE, strDate);
                     db.insert(eTable.TABLE_NAME,null, cv);
               
            }
            db.close();
        }

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da GffJkc Visualizza il messaggio
    Ora sono a questo punto, ho tolto l'if dopo il ciclo while ed il risultato è che il primo record non viene inserito ma ne viene aggiunto uno in più
    Scusa, capisco che magari sei agli inizi, però ti chiederi di "ragionare" un pochino, perché è questo che serve nella programmazione.
    Lo vedi che incrementi il mese prima di usare la data?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    31
    Grazie mille per la tua disponibilità, proverò come hai suggerito.
    a presto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.