Autore Topic: Database su SdCard che non riesco a scrivere  (Letto 841 volte)

Offline ettoRman

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus one
  • Sistema operativo:
    win 7
Database su SdCard che non riesco a scrivere
« il: 25 Ottobre 2010, 18:20:33 CEST »
0
Ciao a tutti sto facendo una mini raccolta ordini, sono riuscito a mettere il database nella SdCard popolato con articoli e clienti solo che riesco ad aprire il database solo in lettura e non in scrittura!!!
 nel manifest ho inserito i permessi di scrittura.
Come posso fare.
Grazie ettoRman

Offline Agafi

  • Utente normale
  • ***
  • Post: 173
  • Respect: +10
    • svetlana-tomasevschi-perini
    • agafist
    • Mostra profilo
  • Dispositivo Android:
    SE Xperia Neo,LG Optimus One,Asus EEE Pad Transformer,HTC Magic Vodafone
  • Play Store ID:
    Agafi
  • Sistema operativo:
    Win7
Re:Database su SdCard che non riesco a scrivere
« Risposta #1 il: 26 Ottobre 2010, 08:18:50 CEST »
+1
Ciao,

senza il codice che usi è difficile darti un aiuto....

comunque con questa istruzione io riesco a leggere e soprattutto scrivere nel db presente nella memory card
Codice (Java): [Seleziona]
       
SQLiteDatabase.openDatabase(Environment.getExternalStorageDirectory() + "/xxx/yyyy", null, SQLiteDatabase.OPEN_READWRITE        + SQLiteDatabase.CREATE_IF_NECESSARY);



Offline ettoRman

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus one
  • Sistema operativo:
    win 7
Re:Database su SdCard che non riesco a scrivere
« Risposta #2 il: 26 Ottobre 2010, 14:08:52 CEST »
0
Ciao grazie per l'interessamento, in effetti senza codice è difficile!!!!

quello che uso io è simile a quello che usi tu ovvero:
Codice (Java): [Seleziona]
....
String percorso="sdcard"+File.separator+"nomeDb.Db3";

DB=SQLiteDatabase.openDatabase(percorso, null, SQLiteDatabase.OPEN_READWRITE);      

....

dopo di che provo a scrivere dei dati  in questo modo:

Codice (Java): [Seleziona]
String sql="INSERT INTO MIA_TABELLA (CAMPO1,CAMPO2) VALUES (?,?)";
String[] bindArgs ={"10","69"}

try{
DB.execSQL(sql,bindArgs);
//scrivi che va bene
}catch (SQLiteException ex){
//scrivi il messaggio di errore da qualche parte

}

ma ottengo come errore:

error code 8: attempt to write a readonly database


dopo provo a sostituire "sdcard" con quello che usi tu Environment.getExternalStorageDirectory()
anche se non penso che sia quello il problema, preché i dati dal database li leggo

Grazie
ettoRman








Offline Agafi

  • Utente normale
  • ***
  • Post: 173
  • Respect: +10
    • svetlana-tomasevschi-perini
    • agafist
    • Mostra profilo
  • Dispositivo Android:
    SE Xperia Neo,LG Optimus One,Asus EEE Pad Transformer,HTC Magic Vodafone
  • Play Store ID:
    Agafi
  • Sistema operativo:
    Win7
Re:Database su SdCard che non riesco a scrivere
« Risposta #3 il: 26 Ottobre 2010, 14:28:58 CEST »
0
piuttosto aggiungi il parametro

SQLiteDatabase.CREATE_IF_NECESSARY

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Database su SdCard che non riesco a scrivere
« Risposta #4 il: 26 Ottobre 2010, 14:41:52 CEST »
0

Citazione
Codice (Java): [Seleziona]
String percorso="sdcard"+File.separator+"nomeDb.Db3";

Non manca uno / davanti a sdcard?

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Database su SdCard che non riesco a scrivere
« Risposta #5 il: 26 Ottobre 2010, 14:45:15 CEST »
+1
Comunque evita di fare l'hardcoding di /sdcard . Usa getExternalStorageDirectory
Postate il LogCat LogCat LogCat LogCat LogCat

Offline ettoRman

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus one
  • Sistema operativo:
    win 7
Re:Database su SdCard che non riesco a scrivere
« Risposta #6 il: 26 Ottobre 2010, 14:57:33 CEST »
0
anche senza /  leggo i dati dal database, tra l'altro faccio anche un test se il file esiste e mi da esito positivo.
mi sembra di ricordare che tempo fa lo mettevo ma mi veniva fuori un errore del tipo che usavo un path delimiter nel percorso de file o una robba simile non ricordo bene,  (fino adesso sono riuscito a dedicarmi all'androide solo nei ritagli tempo)

comunque lo ho già levato sdcard e lo ho sostituito con Usa getExternalStorageDirectory

Offline ettoRman

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus one
  • Sistema operativo:
    win 7
Re:Database su SdCard che non riesco a scrivere
« Risposta #7 il: 28 Ottobre 2010, 17:24:25 CEST »
0
.... non riesco proprio a capire :'(

faccio il test se il db non è a sola lettura e viene fuori che non è a sola lettura
ci scrivo dentro un paio di dati in una tabella con una rawQuery testata con un tool per sqlite per evitare di scrivere qualche cosa di sbagliato ma mi continua a venire:
error code 8: attempt to write a readonly database

qualcuno ha qualche idea?????

il database l'ho creato con un tool esterno popolato di dati e copiato dentro alla scheda sd dell'emulatore
i dati li leggo ma non riesco a scriverci dentro.




 

Offline ettoRman

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus one
  • Sistema operativo:
    win 7
Re:Database su SdCard che non riesco a scrivere
« Risposta #8 il: 29 Ottobre 2010, 10:30:22 CEST »
0
Trovato!!! mi viene da esclamare BioParco!
lo sapevo che doveva essere una stupidaggine e infatti lo è
nei permessi ho scritto WRITE_EXTERNAL_STORAGE
invece dovevo scrivere
android.permission.WRITE_EXTERNAL_STORAGE
altro aspetto diverente e che nel libro di carli nel riquadro dove scrive i permessi c'è ovviamente scritto la cosa giusta solo che va a capo in questo modo
android.permission.
WRITE_EXTERNAL_STORAGE
 e mi ero perso la prima parte!!

grazie dell'interessamento