CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: carotix con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 7 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 31 Thanks ricevuti nell'ultimo mese

Pagina 1 di 2 12 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 1 a 10 su 12
Discussione:

DB SQLite

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Mar 2011
    Messaggi
    11

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    DB SQLite

    Ciao ragazzi io devo inserire nella mia applicazione android circa 18000 righe da inserire nel db. E' possibile creare direttamente il file sqlite e poi darlo in pasto al programma? Grazie a tutti

  2.  
  3. #2
    Baby Droid


    Registrato dal
    Mar 2011
    Messaggi
    11

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ecco l'errore

    Too many constants, the constant pool for NomeClasse would exceed 65536 entries.

    Ora come faccio a passargli tutte quelle istruzioni sql? Qualcuno sa aiutarmi?

  4. #3
    Androidiano L'avatar di DarthSith


    Registrato dal
    Jan 2010
    Messaggi
    256

    Ringraziamenti
    1
    Ringraziato 14 volte in 14 Posts
    Predefinito

    Posta il codice e una spiegazione di cosa devi fare.

  5. #4
    Baby Droid


    Registrato dal
    Mar 2011
    Messaggi
    11

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    package francesco.Indirizzario;

    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;


    public class GenericDAO extends SQLiteOpenHelper {
    private static final String DB_NAME = "Cartoline";
    private static final int DB_VERSION = 4;

    public GenericDAO(Context context) {
    super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
    //Creazione delle tabelle

    //Crea la tabella con le nazioni
    String sql = "";
    sql += "CREATE TABLE T_Nazioni (";
    sql += " _id INTEGER PRIMARY KEY,";
    sql += " CodNazione TEXT NOT NULL,";
    sql += " Descrizione TEXT NOT NULL";
    sql += ");";
    db.execSQL(sql);

    //Crea la tabella con le città
    sql = "";
    sql += "CREATE TABLE T_Citta (";
    sql += " _id INTEGER PRIMARY KEY,";
    sql += " CodNazione TEXT NOT NULL,";
    sql += " Id_Citta INTEGER NOT NULL,";
    sql += " Descrizione TEXT NOT NULL";
    sql += ");";
    db.execSQL(sql);

    //Crea la tabella con le vie
    sql = "";
    sql += "CREATE TABLE T_Vie (";
    sql += " _id INTEGER PRIMARY KEY,";
    sql += " CodNazione TEXT NOT NULL,";
    sql += " Id_Citta INTEGER NOT NULL,";
    sql += " Id_Via INTEGER NOT NULL,";
    sql += " Descrizione TEXT NOT NULL,";
    sql += " CAP TEXT NOT NULL";
    sql += ");";
    db.execSQL(sql);

    //creo la tabella per i messaggi delle cartoline
    sql = "";
    sql += "CREATE TABLE T_Messaggi (";
    sql += " _id INTEGER PRIMARY KEY,";
    sql += " Categoria TEXT NOT NULL,";
    sql += " Messaggio TEXT NOT NULL,";
    sql += " Lingua TEXT NOT NULL";
    sql += ");";
    db.execSQL(sql);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db,int oldVersion, int newVersion) {
    // Aggiornamento delle tabelle

    //Inserisco i dati delle nazioni
    String sql;
    sql="DELETE FROM T_Nazioni;";
    db.execSQL(sql);
    sql="DELETE FROM T_Citta;";
    db.execSQL(sql);
    sql="DELETE FROM T_Vie;";
    db.execSQL(sql);
    sql="DELETE FROM T_Messaggi;";
    db.execSQL(sql);


    sql = "";
    sql += "INSERT INTO T_Nazioni(CodNazione,Descrizione)VALUES('IT','ITAL IA');";
    db.execSQL(sql);
    sql = "";
    sql += "INSERT INTO T_Nazioni(CodNazione,Descrizione)VALUES('GR','GREC IA');";
    db.execSQL(sql);

    //Inserisco i dati delle città
    sql = "";
    sql += "INSERT INTO T_Citta(CodNazione,Id_Citta,Descrizione)VALUES('IT ',1,'ROMA');";
    db.execSQL(sql);
    sql = "";
    sql += "INSERT INTO T_Citta(CodNazione,Id_Citta,Descrizione)VALUES('IT ',2,'MILANO');";
    db.execSQL(sql);
    sql = "";
    sql += "INSERT INTO T_Citta(CodNazione,Id_Citta,Descrizione)VALUES('IT ',3,'ROSSANA');";
    db.execSQL(sql);
    //Inserisco i dati delle vie
    sql = "";
    sql += "INSERT INTO T_Vie(CodNazione,Id_Citta,Id_Via,Descrizione, Cap)VALUES('IT',1,1,'Via ROMA','11111');";
    db.execSQL(sql);
    sql = "";
    sql += "INSERT INTO T_Vie(CodNazione,Id_Citta,Id_Via,Descrizione, Cap)VALUES('IT',1,2,'Via ROMA2','11112');";
    db.execSQL(sql);
    sql = "";
    sql += "INSERT INTO T_Vie(CodNazione,Id_Citta,Id_Via,Descrizione, Cap)VALUES('IT',2,1,'Via Milano','21111');";
    db.execSQL(sql);
    sql = "";
    sql += "INSERT INTO T_Vie(CodNazione,Id_Citta,Id_Via,Descrizione, Cap)VALUES('IT',2,2,'Via Milano2','21112');";
    db.execSQL(sql);
    sql = "";
    sql += "INSERT INTO T_Vie(CodNazione,Id_Citta,Id_Via,Descrizione, Cap)VALUES('IT',3,1,'Paese intero','12020');";
    db.execSQL(sql);


    sql="INSERT INTO T_Messaggi(Categoria,Messaggio,Lingua)VALUES('CORD IALI','Ciao NomeCognome come stai?','IT');";
    db.execSQL(sql);
    sql="INSERT INTO T_Messaggi(Categoria,Messaggio,Lingua)VALUES('CORD IALI','Ciao NomeCognome sarebbe bello fossi qui con noi.','IT');";
    db.execSQL(sql);
    sql="INSERT INTO T_Messaggi(Categoria,Messaggio,Lingua)VALUES('SIMP ATICHE','Ma va a morir ammazzato...','IT');";
    db.execSQL(sql);


    }

    }

    Questo è un esempio. Ma quando sono andato ad inserire i dati reali (che sono mooolti) mi ha dato l'errore sopra menzionato. Penso sia solo un problema di quanti record vado ad inserire però vorrei capire come fare ad aggirarlo.

  6. #5
    Senior Droid


    Registrato dal
    May 2010
    Località
    Rivoli
    Messaggi
    426

    Ringraziamenti
    6
    Ringraziato 48 volte in 47 Posts
    Predefinito

    Carica i dati dentro il db DA PC, poi inserisci il db già caricato dentro la tua applicazione sul dispositivo
    Ultima modifica di TheCopacabanaMan; 21-03-11 alle 17:08

  7. #6
    Baby Droid


    Registrato dal
    Mar 2011
    Messaggi
    11

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Quote Originariamente inviato da TheCopacabanaMan Visualizza il messaggio
    Carica i dati dentro il db DA PC, poi inserisci il db già caricato dentro la tua applicazione sul dispositivo
    E' proprio quello che non so fare. Come posso farlo tramite eclipse?

  8. #7
    Senior Droid


    Registrato dal
    May 2010
    Località
    Rivoli
    Messaggi
    426

    Ringraziamenti
    6
    Ringraziato 48 volte in 47 Posts
    Predefinito

    1) scarica il programma Sqlite3.exe da qui: SQLite Version 3 Overview
    2) su PC, crea un bel file il_mio_bel_db.sql E' un file di testo, dove metterai i tuoi MilleMila comandi di: create table, insert into my beautiful table, etc.
    3) su PC, attraverso Sqlite3.exe, infila il file il_mio_db.sql dentro il tuo database il_mio_bel_db.db con questo comando DOS:
    codice:
    	sqlite3.exe il_mio_bel_db.db  < il_mio_bel_db.sql
    4) copia il file il_mio_bel_db.db dentro il progetto eclipse, nella sottodirectory
    il_mio_bel_programma\res\raw\il_mio_bel_db.db
    (hai creato le sottodirectory res\raw\ vero?)
    5) da codice java, quando fai partire il programma la prima volta, puoi inserire questo codice:

    codice:
    	public void Copy_DB() throws IOException{
    	    // databaseInput punta al nostro file il_mio_bel_db.db
    	    InputStream databaseInput = null;
    	    // db_name e' il nome del db proprietario dell'applicazione
    	    db_name = context.getApplicationInfo().dataDir + "/databases/il_mio_bel_db.db";
    	    String outFileName = db_name;
    	    OutputStream databaseOutput = new FileOutputStream(outFileName);
    
    	    byte[] buffer = new byte[1024];
    	    int length;
    
    	    databaseInput = context.getResources().openRawResource( com.il_mio_bel_programma.raw.data );
    	    while((length = databaseInput.read(buffer)) > 0) {
    	        databaseOutput.write(buffer, 0, length);
    	        databaseOutput.flush();
    	    }
    	    databaseInput.close();
    	    databaseOutput.flush();
    	    databaseOutput.close();
    	}
    Ehi! Solo la prima volta, ho detto! Altrimenti inizializzi il DB ogni volta che lanci il programma.

    P.S. per la consulenza, mi devi un gelato!

  9. #8
    Androidiano VIP L'avatar di elegos


    Registrato dal
    Jul 2009
    Messaggi
    1,714

    Ringraziamenti
    2
    Ringraziato 153 volte in 120 Posts
    Predefinito

    Ci sono anche estensioni gratuite per i browser come Chrome o Firefox che ti permettono di modificare/creare database SQLite. L'unica cosa devi stare attento ad utilizzare la giusta versione, so che in Gingerbread il motore è stato aggiornato (tanto che non potevo più aprire i backup di MyBackup Pro in quanto diceva esser corrotti)... e sinceramente non so che versioni utilizzino le varie versioni di Android.

    In ogni caso considera il fatto che se ti dice che ci sono 6000 e rotti dati di troppo, è molto probabile che sia un limite in dimensioni del database, piuttosto che una quantità sopra il limite di query.

  10. #9
    Baby Droid


    Registrato dal
    Mar 2011
    Messaggi
    11

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Grazie a tutti vi farò sapere prossimamente come è andata.

  11. #10
    Senior Droid


    Registrato dal
    May 2010
    Località
    Rivoli
    Messaggi
    426

    Ringraziamenti
    6
    Ringraziato 48 volte in 47 Posts
    Predefinito

    Quote Originariamente inviato da xinyiman Visualizza il messaggio
    vi farò sapere prossimamente come è andata.
    Ecco si, chè siamo curiosi come scimmie!

Pagina 1 di 2 12 ultimoultimo
Ultima pagina

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy