Autore Topic: Recupero dati da file di testo  (Letto 2866 volte)

Offline dami7net

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Hero
  • Sistema operativo:
    Mac OSX
Recupero dati da file di testo
« il: 22 Marzo 2010, 16:21:26 CET »
0
Salve a tutti.
Sto sviluppando una applicazione per android (la trovate nella sezione open source)...
Volevo chiedere una cosa. Al momento dell'installazione volevo caricare nel database una buona quantità di dati, memorizzati in un file di testo (tipo csv). Come fare?
Grazie
« Ultima modifica: 15 Maggio 2010, 17:25:22 CEST da JD »

Offline Rolli

  • Utente junior
  • **
  • Post: 82
  • Respect: 0
    • Mostra profilo
    • voodoomedia.it
  • Dispositivo Android:
    Acer Liquid
  • Play Store ID:
    voodoomedia
  • Sistema operativo:
    Windows
Re:Recupero dati da file di testo
« Risposta #1 il: 22 Marzo 2010, 16:30:36 CET »
0
io gestisco il DB SQLite esternamente con tools appositi poi metto il file nella cartella raw che crei dentro alla cartella res

poi quando crei il database controlla se non esiste e nel caso lo crei leggendo da quel file

Codice (Java): [Seleziona]
private static String DB_PATH = "/data/data/my.package/databases/";

private void copyDataBase() throws IOException
{
        InputStream myInput = myContext.getAssets().open(DB_NAME);
       
        String outFileName = DB_PATH + DB_NAME;

        OutputStream myOutput = new FileOutputStream(outFileName);
       
        byte[] buffer = new byte[1024];
        int length;
        while ((length = myInput.read(buffer))>0)
        {
                myOutput.write(buffer, 0, length);
        }

}
        myOutput.flush();
        myOutput.close();
        myInput.close();
 
}

quindi il db viene copiato e da qui in poi ti riferisci direttamente come al solito
:)          :P    --->|^.^|<---     ;)         :D 

Offline dami7net

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Hero
  • Sistema operativo:
    Mac OSX
Re:Recupero dati da file di testo
« Risposta #2 il: 22 Marzo 2010, 16:32:42 CET »
0
grazie!
Ma che vuol dire che gestisci il DB con tool esterni?

Offline Rolli

  • Utente junior
  • **
  • Post: 82
  • Respect: 0
    • Mostra profilo
    • voodoomedia.it
  • Dispositivo Android:
    Acer Liquid
  • Play Store ID:
    voodoomedia
  • Sistema operativo:
    Windows
Re:Recupero dati da file di testo
« Risposta #3 il: 22 Marzo 2010, 16:40:48 CET »
0
tool esterni come sqlitebrowser o altri.. per creare le tabelle e inserire i dati iniziali e salvare come file.

poi scusa dimenticavo una cosa importante:

il database che carichi deve avere una tabella predefinita usa:

Codice: [Seleziona]
CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'en_US')
INSERT INTO "android_metadata" VALUES ('en_US')
:)          :P    --->|^.^|<---     ;)         :D 

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Recupero dati da file di testo
« Risposta #4 il: 22 Marzo 2010, 17:18:36 CET »
0


Puoi fare come dice Rolli oppure con questo :
http://csv2sql.evandavey.com/
o altri...

ti trasformano il tuo csv in sql, che copierai in una stringa.
al momeno della creazione del db, la prima volta che parte l'applicazione(potresti gestire questo con una preference) esegui l'sql sul db.


CIAO :)


Offline dami7net

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Hero
  • Sistema operativo:
    Mac OSX
Re:Recupero dati da file di testo
« Risposta #5 il: 04 Aprile 2010, 02:21:45 CEST »
0
si, ma non riesco a capire come fare ad aprire il file di testo! se lo apro con la referenza R.raw.nomefile mi apre un file di tipo inputstream... poi non riesco a leggere riga per riga... o meglio, non lo so fare!!
Come si fa????  :-[ :-[ :-[

Offline .zero

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    N/A
  • Sistema operativo:
    Archlinux, Windows 7
Re:Recupero dati da file di testo
« Risposta #6 il: 08 Aprile 2010, 23:01:26 CEST »
0
si, ma non riesco a capire come fare ad aprire il file di testo! se lo apro con la referenza R.raw.nomefile mi apre un file di tipo inputstream... poi non riesco a leggere riga per riga... o meglio, non lo so fare!!
Come si fa????  :-[ :-[ :-[

Si usa un InputStreamReader (se è un file di testo).  :-P
Leggi i caratteri con un ciclo fino a quando non trovi un "\n".
"Programmare" is not equal to "scrivere codice" || The sky is the limit... on an ideal, not-existent calculator.

Offline dami7net

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Hero
  • Sistema operativo:
    Mac OSX
Re:Recupero dati da file di testo
« Risposta #7 il: 08 Aprile 2010, 23:18:24 CEST »
0
A singolo carattere? io ho bisogno di interpretare una riga intera, il file è grande, e char per char è un casino!

Offline .zero

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    N/A
  • Sistema operativo:
    Archlinux, Windows 7
Re:Recupero dati da file di testo
« Risposta #8 il: 08 Aprile 2010, 23:25:38 CEST »
0
A singolo carattere? io ho bisogno di interpretare una riga intera, il file è grande, e char per char è un casino!

La classe BufferedReader ha un metodo readLine() :-P

Codice (Java): [Seleziona]
BufferedReader buf = new BufferedReader(new InputStreamReader(<NOME_INPUT_STREAM>));

while ((linea = buf.readLine()) != null) {
         // fai qualcosa con linea;
}

Gotta love inheritance...  8-)
« Ultima modifica: 08 Aprile 2010, 23:27:27 CEST da .zero »
"Programmare" is not equal to "scrivere codice" || The sky is the limit... on an ideal, not-existent calculator.

Offline Rolli

  • Utente junior
  • **
  • Post: 82
  • Respect: 0
    • Mostra profilo
    • voodoomedia.it
  • Dispositivo Android:
    Acer Liquid
  • Play Store ID:
    voodoomedia
  • Sistema operativo:
    Windows
Re:Recupero dati da file di testo
« Risposta #9 il: 10 Aprile 2010, 09:31:09 CEST »
0
Non è piu comodo copiare il file .sql direttamente come ti suggerivo più su?
:)          :P    --->|^.^|<---     ;)         :D 

Offline dami7net

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Hero
  • Sistema operativo:
    Mac OSX
Re:Recupero dati da file di testo
« Risposta #10 il: 10 Aprile 2010, 09:59:12 CEST »
0
Si, ma come?
Se lo devo trattare come un file di testo allora tanto vale...

Offline Rolli

  • Utente junior
  • **
  • Post: 82
  • Respect: 0
    • Mostra profilo
    • voodoomedia.it
  • Dispositivo Android:
    Acer Liquid
  • Play Store ID:
    voodoomedia
  • Sistema operativo:
    Windows
Re:Recupero dati da file di testo
« Risposta #11 il: 10 Aprile 2010, 10:05:25 CEST »
0
No io mi riferisco alla file sql vero e proprio.. devo dopo aggiungere la tabella copiarlo e usarlo
:)          :P    --->|^.^|<---     ;)         :D 

Offline Rolli

  • Utente junior
  • **
  • Post: 82
  • Respect: 0
    • Mostra profilo
    • voodoomedia.it
  • Dispositivo Android:
    Acer Liquid
  • Play Store ID:
    voodoomedia
  • Sistema operativo:
    Windows
Re:Recupero dati da file di testo
« Risposta #12 il: 10 Aprile 2010, 12:23:34 CEST »
0
eccomi.. prima ero sul cell..
il file .sql [il database vero e proprio] non parlo di query di creazione e riempimento,
lo puoi mettere incluso nel progetto e poi copiarlo nel path che desideri e usarlo direttamente perché android lo riconosce come tale. nessun parsing


crea una cartella "assets" nella root del tuo progetto e ci metti il file miofile.sql
crei la variavile DB_NAME = "miofile.sql"

quindi inserisci il path relativo al tuo package dove /data/data/my.package/databases/
e ce lo copy con il metodo sotto descritto

Codice (Java): [Seleziona]
private static final String DB_NAME    = "miofile.sql";
private static String DB_PATH = "/data/data/my.package/databases/";

private void copyDataBase() throws IOException
{
        InputStream myInput = myContext.getAssets().open(DB_NAME);
       
        String outFileName = DB_PATH + DB_NAME;

        OutputStream myOutput = new FileOutputStream(outFileName);
       
        byte[] buffer = new byte[1024];
        int length;
        while ((length = myInput.read(buffer))>0)
        {
                myOutput.write(buffer, 0, length);
        }

}
        myOutput.flush();
        myOutput.close();
        myInput.close();
 
}

mi sono spiegato meglio?

dimentico sempre cosa importante il tuo file .sql deve avere questa tabella predefinita con questo campo:
Codice (Java): [Seleziona]
CREATE TABLE "android_metadata" ("locale" TEXT   DEFAULT 'en_US')
INSERT INTO "android_metadata" VALUES ('en_US')
« Ultima modifica: 10 Aprile 2010, 12:26:24 CEST da Rolli »
:)          :P    --->|^.^|<---     ;)         :D 

Offline dami7net

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Hero
  • Sistema operativo:
    Mac OSX
Re:Recupero dati da file di testo
« Risposta #13 il: 10 Aprile 2010, 17:01:47 CEST »
0
Grazie !!!
Appena posso provo e ti dico! :D

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Recupero dati da file di testo
« Risposta #14 il: 20 Aprile 2010, 16:39:18 CEST »
0
Novità? Si può mettere [RISOLTO] nel titolo? :)
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !