CERCA
PER MODELLO
FullScreen Chatbox! :)

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

Pagina 4 di 5 primaprima ... 2345 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 31 a 40 su 49
Discussione:

[ECLIPSE] Copia db sqlite preesistente da 'assets' a /data/data/..

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. #31
    Baby Droid


    Registrato dal
    Jun 2012
    Messaggi
    13

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Exception azzzzz......data exceeds UNCOMPRESS_DATA_MAX

  2.  
  3. #32
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Quote Originariamente inviato da Tuzzo77 Visualizza il messaggio
    Buongiorno a tutti, son nuovo del forum e anche di android...ma non di Java fortunately.

    Sto impazzendo pure io su SQLite. Devo usare un mioDB di 6 mega con tutti i contatti. Ho provato il codice che avete impostato all'inizio della conversazione. Ho spostato il copyDatabase prima del getReadableDatabase, ma nonostante questo mi va in exception nella copia dall'assets in databases.....

    while ((length = assetsDB.read(buffer))>0){
    dbOut.write(buffer, 0, length);
    }

    proprio qui!

    Qualcuno puoi gentilmente aiutarmi? Grazie mille per qualsiasi info

    Ciao,

    io su un Galaxy Note copio dalla assets un db sqlite da circa 9mb senza problemi.

    Questa la function per la copia:
    codice:
     public void copyDatabase() throws IOException {
    	  if (controlloEsistenzaDb()) {
    	  }else{
    		InputStream assetsDB = context.getAssets().open("androidsqlitedb.s3db");
    		OutputStream dbOut = new FileOutputStream(DB_PATH + "androidsqlitedb");
    	    byte[] buffer = new byte[1024];
    	    int length;
    	    while ((length = assetsDB.read(buffer))>0){
    	      dbOut.write(buffer, 0, length);
    	    }	 
    	    dbOut.flush();
    	    dbOut.close();
    	    assetsDB.close();
    	  }
    	}
    e questa la funzione usata per il controllo esistenza file sul device:

    codice:
      public boolean controlloEsistenzaDb()  {
      File dbFile = new File(DB_PATH + MYDATABASE_NAME);
      return dbFile.exists();
        }
    Ultima modifica di frank17next; 15-06-12 alle 13:48 - Motivo: spostamento quote in alto
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  4. #33
    Baby Droid


    Registrato dal
    Jun 2012
    Messaggi
    13

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Allora grazie per la risposta...son andato un po' avanti nei test anche se il risultato ancora non riesco ad ottenerlo. Faccio un veloce capitolato di quello che finora ho fatto:

    -Sqlite versione 1.1 (vecchina) perchè ho dovuto convertire dati da un csv e la nuova versione non me lo consentiva.
    -con Eclipse lavoro sull'emulatore in cui posso vedere il contenuto di DATA/DATA etc o della SDCARD...
    -la copia del DB se supero il Mega non la fa sull'EMULATORE...vabbè ho ridotto i dati per fare i test
    -avviene la copia su SDCARD (Emulatore) e vedo il file ma quando provo ad aprirlo con il plugin Sqlite data browser non gli piace. Penso che la versione del db influenzi cio'.
    -adesso son bloccato su un exception "no such table "nome mia tabella""..


    Grazie per qualsiasi info

  5. #34
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Quote Originariamente inviato da Tuzzo77 Visualizza il messaggio
    Allora grazie per la risposta...son andato un po' avanti nei test anche se il risultato ancora non riesco ad ottenerlo. Faccio un veloce capitolato di quello che finora ho fatto:

    -Sqlite versione 1.1 (vecchina) perchè ho dovuto convertire dati da un csv e la nuova versione non me lo consentiva.
    -con Eclipse lavoro sull'emulatore in cui posso vedere il contenuto di DATA/DATA etc o della SDCARD...
    -la copia del DB se supero il Mega non la fa sull'EMULATORE...vabbè ho ridotto i dati per fare i test
    -avviene la copia su SDCARD (Emulatore) e vedo il file ma quando provo ad aprirlo con il plugin Sqlite data browser non gli piace. Penso che la versione del db influenzi cio'.
    -adesso son bloccato su un exception "no such table "nome mia tabella""..


    Grazie per qualsiasi info
    Se usi il metodo getReadableDatabase (della classe SQLiteAdapter/Helper <- a proposito, posta il codice interessato) prima che avvenga la copia da assets, ottieni la creazione di un db vuoto (creato dal metodo) e il fallimento della copia per sovra scrittura di quel file db aperto

    Inviato dal mio Nexus S tramite Tapatalk 2
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  6. #35
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Se hai l'errore 'No such table...' tabella non trovata, è presumibile che applichi una query su un db vuoto

    Inviato dal mio Nexus S tramite Tapatalk 2
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  7. #36
    Baby Droid


    Registrato dal
    Jun 2012
    Messaggi
    13

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    On click: (copiando pigramente tali e quali il tuo codice


    miodb.openToRead();
    String contenutoletto = miodb.queueAll();
    miodb.close();
    mioTextView1.setText(contenutoletto);


    ON read:

    public SQLiteAdapter openToRead() throws android.database.SQLException {
    sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION);
    try {
    sqLiteHelper.copyDatabase();
    } catch (IOException e) {

    e.printStackTrace();
    }
    sqLiteDatabase = sqLiteHelper.getReadableDatabase();
    return this;
    }

  8. #37
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Quote Originariamente inviato da Tuzzo77 Visualizza il messaggio
    On click: (copiando pigramente tali e quali il tuo codice


    miodb.openToRead();
    String contenutoletto = miodb.queueAll();
    miodb.close();
    mioTextView1.setText(contenutoletto);


    ON read:

    public SQLiteAdapter openToRead() throws android.database.SQLException {
    sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION);
    try {
    sqLiteHelper.copyDatabase();
    } catch (IOException e) {

    e.printStackTrace();
    }
    sqLiteDatabase = sqLiteHelper.getReadableDatabase();
    return this;
    }
    e ottieni l'exception 'no such table.. ' ecc? potresti postare l'intero errore.
    Inoltre, prova ad allegare l'intera classe sqliteadapter, così la provo
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  9. #38
    Baby Droid


    Registrato dal
    Jun 2012
    Messaggi
    13

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ho un errore quando cerco di allegare il codice.....non è che eccede la dimensione max del post?

  10. #39
    Baby Droid


    Registrato dal
    Jun 2012
    Messaggi
    13

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    package com.econorma.android;

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteException;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.database.sqlite.SQLiteDatabase.CursorFacto ry;
    import android.os.Environment;
    import android.util.Log;

    public class SQLiteAdapter {
    // public static String DB_PATH = "/data/data/com.econorma.android/databases/";
    public static String DB_PATH = "/mnt/sdcard/";
    // public static final String MYDATABASE_NAME = "ECONORMA.db";
    public static final String MYDATABASE_NAME = "test.db";
    public static final String MYDATABASE_TABLE = "ANAGRAFICA";
    public static final int MYDATABASE_VERSION = 1;
    public static final String KEY_CONTENT = "_id";


    private SQLiteHelper sqLiteHelper;
    private SQLiteDatabase sqLiteDatabase;

    private Context context;

    public SQLiteAdapter(Context c){
    context = c;

    }

    public SQLiteAdapter openToRead() throws android.database.SQLException {
    sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION);
    try {
    sqLiteHelper.copyDatabase();
    } catch (IOException e) {

    e.printStackTrace();
    }
    sqLiteDatabase = sqLiteHelper.getReadableDatabase();
    return this;
    }

    public SQLiteAdapter openToWrite() throws android.database.SQLException {
    sqLiteHelper = new SQLiteHelper(context, MYDATABASE_NAME, null, MYDATABASE_VERSION);
    sqLiteDatabase = sqLiteHelper.getWritableDatabase();
    return this;
    }

    public void close(){
    sqLiteHelper.close();
    }

    public long insert(String content){

    ContentValues contentValues = new ContentValues();
    contentValues.put(KEY_CONTENT, content);
    return sqLiteDatabase.insert(MYDATABASE_TABLE, null, contentValues);
    }

    public int deleteAll(){
    return sqLiteDatabase.delete(MYDATABASE_TABLE, null, null);
    }

    public String queueAll(){
    String[] columns = new String[]{KEY_CONTENT};
    Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE, columns,
    null, null, null, null, null);
    String result = "";

    int index_CONTENT = cursor.getColumnIndex(KEY_CONTENT);
    for(cursor.moveToFirst(); !(cursor.isAfterLast()); cursor.moveToNext()){
    result = result + cursor.getString(index_CONTENT) + "\n";
    }

    return result;
    }

    public class SQLiteHelper extends SQLiteOpenHelper {

    public SQLiteHelper(Context context, String name,
    CursorFactory factory, int version) {
    super(context, name, factory, version);
    }

  11. #40
    Baby Droid


    Registrato dal
    Jun 2012
    Messaggi
    13

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    @Override
    public void onCreate(SQLiteDatabase db) {
    //db.execSQL(SCRIPT_CREATE_DATABASE);
    // try {
    // if (checkDataBase()) {
    // }
    // else
    // {
    // copyDatabase();
    // }
    // } catch (IOException e) {
    // e.printStackTrace();
    // }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
    public void copyDatabase() throws IOException {

    if (checkDataBase()) {
    }else{

    // sqLiteDatabase = sqLiteHelper.getReadableDatabase();
    // sqLiteDatabase.close();


    InputStream assetsDB = context.getAssets().open("test.db");
    // OutputStream dbOut = new FileOutputStream("/data/data/com.econorma.android/databases/ECONORMA.db");
    OutputStream dbOut = new FileOutputStream("/mnt/sdcard/test.db");

    byte[] buffer = new byte[1024];
    int length;
    while ((length = assetsDB.read(buffer))>0){
    dbOut.write(buffer, 0, length);
    }

    dbOut.flush();
    dbOut.close();
    assetsDB.close();
    }
    }

    public boolean checkDataBase(){
    SQLiteDatabase checkDB = null;
    try{
    String myPath = DB_PATH + MYDATABASE_NAME;
    checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
    }catch(SQLiteException e){
    //database does't exist yet.
    }
    if(checkDB != null){
    checkDB.close();
    }
    return checkDB != null ? true : false;
    }

    }

    }

Pagina 4 di 5 primaprima ... 2345 ultimoultimo
Ultima pagina

Tag per questa discussione

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