Ma per creare un database su android ho bisogno di inserire qualche permesso nel manifest?
Visualizzazione stampabile
Ma per creare un database su android ho bisogno di inserire qualche permesso nel manifest?
No
Ti consiglio di estendere la classe SQLiteOpenHelper
Puoi spiegarmi a livello concettuale "cosa fare"?
Ho letto tante guide su internet ma ognuno fa un pò come vuole trovando soluzioni che a loro dire funzionano.
Ho capito che devo esternder SQLiteOpenHelper, ma poi devo lavorare con la classe che ho sto creando? Cioè quello sarà il mio database?
Grazie.
Ti dico come faccio io
Io ho creato una classe che estende SQLiteOpenHelper
class OpenHelper extends SQLiteOpenHelper {
static final int DATABASE_VER = 1;
OpenHelper(Context context, String name, int ver) {
super(context, name, null, ver);
}
@Override
public void onCreate(SQLiteDatabase db) {
// qui ci va il codice per creare le tabelle
db.execSQL("CREATE TABLE tabella (id INTEGER PRIMARY KEY AUTOINCREMENT, nome VARCHAR)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// qui ci va il codice per modificare il tuo database,
// se l'aggiornamento da una versione ad'unaltra dell'applicazione lo richiede
// tipo ALTER TABLE ecc
}
}
Poi per usare il database puoi usare
SQLiteDatabase db = (new OpenHelper(context, "nomedb.db", OpenHelper.DATABASE_VER)).getWritableDatabase();
....
db.close();
Poi oltre a questo, visto che uso il db in molti punti e in thread diversi, ho creato un'altra classe che apre e chiude il db solo quando necessario
Grazie mille. Funziona il tuo metodo.
Forse questi 2 articoli possono esserti d'aiuto :
Android e SQLite : Tutorial - Android Code
Android e SQLite : implementazione SQLiteOpenHelper - Android Code
Ciaooo.
I due link inseriti non funzionano.... :(
E se invece volessi accedere ad un database sul web tramite un server (tipo altervista) ? Sapete come si può fare? O se c'è un tutorial anche per questo?
Ragazzi sono nuova sia del forum che della programmazione android..ho fatto un pò di pratica attraverso forum come questo e il manuale di Carli..solo che si danno troppe cose per scontato che io non so roftl .
Ho da creare un progetto universitario sulla gestione dei POI di un gps. Ho bisogno di un db per la gestione dei POI che andrò a richiamare una volta implementate le mappe. Il mio problema è: per creare un db in locale da ciò che ho letto è meglio crearlo direttamente in eclipse e non importarlo, giusto? Ora il punto è che non riesco a capire di quante classi ho bisogno..io avevo pensato:
una classe db per la gestione del database (select/insert)
una classe myPOI che rappresenta il POI (con tutte le sue proprietà) da passare alla classe db.
e poi? la classe per la creazione del database è "in più" (è un activity?), giusto? quindi in totale per questa parte avrei bisogno della creazione di tre classi?
sono domande banali, lo so, ma io sto impazzendo e non sono ferratissima quindi scusatemi in anticipo :'(
Io ho tutti e 2 i manuali di carli ... sono una C*******A bestiale! cercati android programming di puntoinformatico è gratis e la parte sui data base la spiega bene!
le classi per i database prima di fare e dire controlla quelle di Android, ci sono già.
Credo però ci siano problemi con le foreign key sqlite ma se ti serve per uno scopo usa e getta e non per la distribuzione funzioneranno bene!
ti serve una classe per il db utilizzando l'helper con dentro:
- la creazione del db
- la creazione delle tabelle
- la creazione degli insert , update, delete, drop (il truncate table non esiste)
- una select generica o se vuoi personalizzate da usare come medoti nell'app
un'altra per i POI e una per il core dell'app
Salve a tutti, dato che si parla proprio dei database voglio chiedervi un cortese aiuto.
Ho creato un database creando una classe GestoreDb che all'interno ha un'altra classe DbHelper che estende SQLiteOpenHelper.
il problema è il seguente... quando da un'altra classe faccio una query usando la classe GestoreDb mi ritorna una eccezione: SQLiteException: cant't upgrade read-only database from version 0 to 1
Faccio notare che la stessa cosa l'ho fatto precedentemente in modo uguale in un altro progetto e funziona....
Chiedo il vostro aiuto e se vi è possibile rispondere in tempi brevi dato che son alle strette con il tempo.
Ringrazio in anticipo
ciao scuste ma nell'istruzione SQLiteDatabase db = (new OpenHelper(context, "nomedb.db", OpenHelper.DATABASE_VER)).getWritableDatabase(); cosa devo mettere in context?
Salve kalacta269,
Ora è un pò che non tocco più Android ma per quanto ti posso dire io gli devi passare il Context della tua Activity da cui stai operando.
In ogni caso non sono a conoscenza di come hai implemenato tu le classi che gestiscono il database ma potresti, se vuoi, prendere
spunto da come l'ho costruito io (vedi il mio post di Giugno).
Prova in questo modo e magari funziona oppure passa il Context della tua Activity alla chiamata che fai tu..
Sauti
mikelmanto
Grazie mille infatti seguendo il tuo metodo mi incappo in degli errori e non so come mai non mi crea il database eheheehheh
kalacta269
non ho detto che risolvi con il mio metodo.... infatti come leggi dai post precedenti avevo un errore che non riuscivo a risolvere
che ho risolto da solo ma purtroppo non ricordo come l'ho risolto.
La cosa fondamentale però è che ho suddiviso la crezione della tabella dalla sua gestione. Infatti DbHelper effettua la creazione ed l'ubdate
del db mentre GestoreDb effettua le varie operazioni (insert, delete....) sul database.
L'errore che mi dava era per via dell'update in particoare rigaurdante la versione.... se riesco a trovare la soluzione ti faccio sapere.
Hai provato a passare il Context della tua Activity alla chiamata che fai tu?
Si si ho provato come dici tu ma nada eheeheh
La chiamata per usare il db la faccio in questo modo
dove "this" è la Activity da cui sto richiedendo qualcosa dal db