Autore Topic: Problemi con db su external storage  (Letto 871 volte)

Offline fermat

  • Utente junior
  • **
  • Post: 93
  • Respect: +1
    • Mostra profilo
    • Mattepuffo.com
Problemi con db su external storage
« il: 25 Marzo 2014, 20:08:01 CET »
0
ciao!
sulla mia app, ho un db sqlite sull'external storage.
il db non deve mai essere ricreato perchè viene creato da una web app.
in sostanza la app mobile si scarica il file e lo deve solo leggere.
solo che quando provo ad aprire il db ottengo questo errore:
Codice: [Seleziona]
03-25 15:03:11.980: W/FileUtils(1773): Failed to chmod(/storage/sdcard/films.sqlite): libcore.io.ErrnoException: chmod failed: EPERM (Operation not permitted)
questi sono i permessi settati:
Codice: [Seleziona]
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
queste invece le classi per il db:
Codice: [Seleziona]
public class SqliteDbHelper extends SQLiteOpenHelper {

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

        @Override
        public void onCreate(SQLiteDatabase db) {
        }

        @Override
        public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
        }

}
e:
Codice: [Seleziona]
public class SqliteHanlder {
        private SqliteDbHelper dbHelper;
        private SQLiteDatabase sqliteDatabase;

        public SqliteHanlder(Context context, String db) {
                dbHelper = new SqliteDbHelper(context, db, null, 1);
                sqliteDatabase = dbHelper.getReadableDatabase();
        }
       
        public Cursor select(String query) {
                Cursor cursor;
                if(sqliteDatabase.isOpen()) {
                        sqliteDatabase.close();
                }
                sqliteDatabase = dbHelper.getWritableDatabase();
                cursor = sqliteDatabase.rawQuery(query, null);
                return cursor;
        }

}
avete qualche idea??

Offline fermat

  • Utente junior
  • **
  • Post: 93
  • Respect: +1
    • Mostra profilo
    • Mattepuffo.com
Re:Problemi con db su external storage
« Risposta #1 il: 28 Marzo 2014, 15:43:29 CET »
0
nessuno sa darmi una dritta??

o una possibile alternativa??

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Problemi con db su external storage
« Risposta #2 il: 28 Marzo 2014, 15:49:35 CET »
0
Hai kitkat?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Problemi con db su external storage
« Risposta #3 il: 28 Marzo 2014, 16:04:23 CET »
0
o una possibile alternativa??

Salvalo nella memoria interna :D

Offline fermat

  • Utente junior
  • **
  • Post: 93
  • Respect: +1
    • Mostra profilo
    • Mattepuffo.com
Re:Problemi con db su external storage
« Risposta #4 il: 29 Marzo 2014, 13:58:54 CET »
0
ciao!

l'emulatore si basa su android 4.4.2, quindi kitkat se non erro.

potrei anche caricarlo in quella interna, ma per una serie di motivi preferivo quella esterna!

Post unito: 29 Marzo 2014, 14:28:24 CET
cmq, ho spostato il file nell'internal storage.
verificato che il file esiste, ho fatto così:
Codice: [Seleziona]
public class SqliteHanlder {

        SqliteDbHelper dbHelper;
        SQLiteDatabase sqliteDatabase;
        public static final String DATABASE_NAME = "films.sqlite";

        public SqliteHanlder(Context context) {
                dbHelper = new SqliteDbHelper(context, DATABASE_NAME, null, 1);
                sqliteDatabase = dbHelper.getWritableDatabase();
        }

        public Cursor select(String query) {
                Cursor cursor = null;
                if (sqliteDatabase.isOpen()) {
                        sqliteDatabase.close();
                }
                sqliteDatabase = dbHelper.getWritableDatabase();
                cursor = sqliteDatabase.rawQuery(query, null);
                return cursor;
        }

}
ma ottengo l'errore: (1) no such table: film
la tabella si chiama così, ne sono sicuro.
« Ultima modifica: 29 Marzo 2014, 14:28:24 CET da fermat, Reason: Merged DoublePost »

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Problemi con db su external storage
« Risposta #5 il: 29 Marzo 2014, 15:28:11 CET »
0
Se scrivi su SD intesa come scheda fisica di memoria, beh in kitkat sono cambiati i diritti di accesso alla SD.

Sono cambiati..  beh diciamo che non ci puoi scrivere e stop.  :D

Offline fermat

  • Utente junior
  • **
  • Post: 93
  • Respect: +1
    • Mostra profilo
    • Mattepuffo.com
Re:Problemi con db su external storage
« Risposta #6 il: 29 Marzo 2014, 19:57:33 CET »
0
bhe in verità i file me li fa salvare.
il problema era più in lettura in questo caso.....

cmq anche mettendolo nella memoria interna ottengo un errore.
quindi sto punto e a capo >:( >:(