Autore Topic: [medio] Creazione e utilizzo di un database SQLite  (Letto 16139 volte)

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 732
  • Respect: +177
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Nexus One - Wildfire - Magic
  • Market Developer Name:
    egsolutions
  • Sistema operativo:
    Ubuntu 11.04, Windows 7

Offline dom4

  • Utente junior
  • **
  • Post: 125
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Vodafone Ideos
  • Sistema operativo:
    ubuntu 10.10
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #91 il: 31 Gennaio 2012, 16:17:25 CET »
0
Ho seguito il tuo tutorial,ottimo come al solito.
Il mio problema è che non mi viene visualizzato la listView che implemento dal cursor.
Codice (Java): [Seleziona]
public class DettaglioImpianto extends Activity {

            private DatabaseHelper db_tts;
            private  SQLiteDatabase db;
                TextView nomeImpianto;
                TextView indirizzoImpianto;
                ListView listDettaglioImpianto;
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.dettaglioimpianto);
               
                listDettaglioImpianto = (ListView)findViewById(R.id.listViewUnitaLogiche);
                nomeImpianto = (TextView)findViewById(R.id.textNomeImpianto);
                indirizzoImpianto = (TextView)findViewById(R.id.textViewDettagliImpianto);
               
                db_tts = new DatabaseHelper(this);
                db = db_tts.getReadableDatabase(); //accesso in scrittura al db
               
                String selectDescrizioneImpianto ="SELECT Descrizione  FROM Impianto";
                String selectIndirizzoImpianto ="SELECT Indirizzo  FROM Impianto";
                String selectUnitaLogiche = "SELECT _id,Descrizione,Reparto,Area,Stabilimento,Piano FROM unitalogica WHERE Impianto_ID=1";
            Cursor cursor = db.rawQuery(selectDescrizioneImpianto,null);
           


                while (cursor.moveToNext())
                {
                        nomeImpianto.setText(cursor.getString(0));
                }
                cursor.close();
                cursor = db.rawQuery(selectIndirizzoImpianto,null);
                while (cursor.moveToNext())
                {
                        indirizzoImpianto.setText(cursor.getString(0));
                }
                cursor.close();
                cursor =db.rawQuery(selectUnitaLogiche,null);
                Log.i("","numero colonne cursore : "+ cursor.getColumnCount());
                startManagingCursor(cursor);
                cursor.moveToFirst();
                Log.i("","Descrizione UL" + cursor.getString(1));
                Log.i("","Reparto UL" + cursor.getString(2));
                Log.i("","Area UL" + cursor.getString(3));
                Log.i("","Stabilimento UL" + cursor.getString(4));
                Log.i("","Piano UL" + cursor.getString(5));
               
               String [] from = new String[]{UnitaLogica._id,UnitaLogica.Descrizione,UnitaLogica.Reparto,UnitaLogica.Area,UnitaLogica.Stabilimento,UnitaLogica.Piano};
               int [] to =   new int[]{R.id.textViewDescrizioneUL, R.id.textViewRepartoUL, R.id.textViewAreaUL,R.id.textViewStabilimentoUL,R.id.textViewPianoUL};//in queste textView

           
                SimpleCursorAdapter adapter = new SimpleCursorAdapter(DettaglioImpianto.this,R.layout.row_unitalogica,cursor,from,to);  
                listDettaglioImpianto.setAdapter(adapter);
                listDettaglioImpianto.setVisibility(View.VISIBLE);
                cursor.close();
                db.close();
       
            }
           
}
Come si può vedere dal log il cursor è pieno ed ha i dati corretti:
Codice: [Seleziona]
01-31 15:15:01.524: I/(10707): numero colonne cursore : 6
01-31 15:15:01.534: I/(10707): Descrizione ULprimo piano
01-31 15:15:01.534: I/(10707): Reparto UL0
01-31 15:15:01.544: I/(10707): Area UL0
01-31 15:15:01.544: I/(10707): Stabilimento ULanyType{}
01-31 15:15:01.544: I/(10707): Piano ULanyType{}
Stabilimento e Piano sono vuoti di default..
Per completezza metto anche i layout xml di listView e row_unitalogica
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   >

    <ImageView
       android:id="@+id/imageHospital"
       android:layout_width="50dip"
       android:layout_height="50dip"
       android:layout_alignParentLeft="true"
       android:layout_alignParentTop="true"
       android:src="@drawable/ic_hospital" />

    <ListView
       android:id="@+id/listViewUnitaLogiche"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true"
       android:layout_below="@+id/imageHospital" >
    </ListView>
   


     <TextView
        android:id="@+id/textNomeImpianto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/imageHospital"
        android:text="Nome impianto"
        android:textColor="@color/grey"
        android:textAppearance="?android:attr/textAppearanceSmall" />


     <TextView
        android:id="@+id/textViewDettagliImpianto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/textNomeImpianto"
        android:layout_toRightOf="@+id/imageHospital"
        android:textColor="@color/grey"
        android:text="DettagliImpianto"
        android:textAppearance="?android:attr/textAppearanceSmall" />

</RelativeLayout>

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
    >


    <TextView
       android:id="@+id/textViewDescrizioneUL"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true"
       android:layout_alignParentTop="true"
       android:text="Descrizione unità logica"
       android:textColor="@color/red"
       android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
       android:id="@+id/textViewRepartoUL"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true"
       android:layout_below="@+id/textViewDescrizioneUL"
       android:text="Reparto"
       android:textColor="@color/red"
       android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
       android:id="@+id/textViewAreaUL"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignBaseline="@+id/textViewRepartoUL"
       android:layout_alignBottom="@+id/textViewRepartoUL"
       android:layout_toRightOf="@+id/textViewRepartoUL"
       android:text="Area"
       android:layout_marginLeft="10dip"
       android:textColor="@color/red"
       android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
       android:id="@+id/textViewStabilimentoUL"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true"
       android:layout_below="@+id/textViewRepartoUL"
       android:text="STABILIMENTO"
       android:textColor="@color/red"
       android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
       android:id="@+id/textViewPianoUL"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignBottom="@+id/textViewStabilimentoUL"
       android:layout_alignRight="@+id/textViewDescrizioneUL"
       android:text="Piano"
       android:textColor="@color/red"
       android:textAppearance="?android:attr/textAppearanceSmall" />

</RelativeLayout>

Davvero non riesco a capire dov'è il problema,spero possiate aiutarmi..
« Ultima modifica: 31 Gennaio 2012, 17:36:40 CET da dom4 »

Offline Emma

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Creazione e utilizzo di un database SQLite: operazioni annidate
« Risposta #92 il: 02 Febbraio 2012, 12:50:37 CET »
0
Salve,

come vi comportate nel caso di query annidate ?
Ad esempio:
Codice: [Seleziona]
        db.beginTransaction();
                try {
                        idDeleted = db.delete(cliente, "_id = ?", new String[] {Long.toString(cliente.getId())});
                        db.beginTransaction();
                        try {
                             idDeletedSim = db.delete(sim, "_iod = ?", new String[] {Long.toString(sim.getId())});                       
                             db.setTransactionSuccessful();
                        } catch (Exception e) {
                        } finally {
                                db.endTransaction();
                                db.setTransactionSuccessful();
                } catch (Exception e) {
                        Log.e(TAG, e.getMessage());
                } finally {

                        db.endTransaction();
                        db.close();
                        openHelper.close(); ...
che ho fatto in tal modo perchè se inserisco le due delete di fila le esegue ma non le committa.
Vorrei capire se esiste un modo più corretto o se sbaglio qualcosa, visto che se le metto in un unico beginTr-endTr non committa.

Grazie a tutti! :-)

Offline Bingo Bongo

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    XPERIA X10 Mini
  • Sistema operativo:
    Windows XP su NetBook
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #93 il: 22 Febbraio 2012, 22:37:54 CET »
0
Ciao a tutti ragazzi,
forse è stato già data risposta: ho creato un database sqlite con tabelle è decine di record. Questo database è stato creato al di fuori di android perché ho bisogno che contenga già diverse decine di record prima che android vi acceda.
E' possibile posizionare il file .db in qualche cartella del progetto (di Android) e "connettersi" al db e quindi lavorare i dati storati precedentemente?

Visto che il primo post mi presento: faccio lo sviluppatore Java/Oracle.

Grazie mille.

Offline mambu

  • Utente junior
  • **
  • Post: 122
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #94 il: 23 Febbraio 2012, 09:40:44 CET »
0
se utilizzi il seguente comando:
Codice (Java): [Seleziona]
db.execSQL("DELETE FROM "+nometuatabella);dove db è la variabile SQLiteDatabase, elimini tutti i record della tabella, lasciando la struttura della tabella ancora prensente in memoria. Per cancellare anche la struttura puoi usare:
Codice (Java): [Seleziona]
db.execSQL("DROP TABLE"+ nometuatabella);

Offline djlorix

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    Windows Vista
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #95 il: 27 Febbraio 2012, 17:49:42 CET »
0
Ciao ragazzi
ora sparo una domanda che sono settimane che cerco una risposta in rete ma non la trovo...proprio inerentemente ai DB :-)
se io ho degli array in xml e li volessi esportare nel DB come faccio?.....  :-( sto impazzendo.........................

PS: ho guardato anche qui....però non riesco a capire in un caso "semplice" di array in xml come variare il codice....
[facile] Ottenere dati da tag XML noti da URL, metodo tramite SAXparser - Android Developers Italia
« Ultima modifica: 27 Febbraio 2012, 18:01:28 CET da djlorix »

Offline Ari

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    W7
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #96 il: 03 Marzo 2012, 16:52:07 CET »
0
Caio! Sto facendo un progetto android! Sono una studentessa!
Innanzitutto grazie per il tutorial :) Era ciò che mi serviva!

Ora...

nella creazione del


SimpleCursorAdapter adapter=new SimpleCursorAdapter( //semplice adapter per i cursor
                        this,
                        R.layout.product, //il layout di ogni riga/prodotto
                        c,
                        new String[]{MyDatabase.ProductsMetaData.PRODUCT_NAME_KEY,MyDatabase.ProductsMetaData.PRODUCT_PRICE_KEY},//questi colonne
                        new int[]{R.id.nameTv,R.id.priceTv});//in queste views

Mi dà un errore che dice che non posso crearlo con quei parametri!

Come fare a risolvere??

Grazie in anticipo  ;-)

Offline Ricky`

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 2698
  • Respect: +370
    • Google+
    • rciovati
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    OS X Lion
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #97 il: 03 Marzo 2012, 17:12:19 CET »
0
Dovresti postare qualche informazione in più altrimenti è difficile capire il problema ;)

Offline Ari

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    W7
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #98 il: 03 Marzo 2012, 20:11:14 CET »
0
Pardon! Cmq non ho fatto altro che copiare il primo codice per il tutor! Avevo intenzione di cercare di capirlo per poi capire cosa fare per ciò che devo fare!Però nel codice, mi da l'errore, già prima di debaggarlo, e mi dice :

internal error;cannot istantiate SimpleCursorAdapter(android.context.Context,int,android.database.Cursor,java.lang.String[],int[]) at android.widget.SimpleCursorAdapter to()

Mi da questo errore sul codice:
Codice (Java): [Seleziona]
 SimpleCursorAdapter adapter=new SimpleCursorAdapter( //semplice adapter per i cursor
                        this,
                        R.layout.product, //il layout di ogni riga/prodotto
                        c,
                        new String[]{MyDatabase.ProductsMetaData.PRODUCT_NAME_KEY,MyDatabase.ProductsMetaData.PRODUCT_PRICE_KEY},//questi colonne
                        new int[]{R.id.nameTv,R.id.priceTv});//in queste views

Forse è una sciocchezza, oppure sbaglio io qlks di banale! Mi sto inultrando in questo mondo da pochi giorni  :-)


Offline andre_bacci

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Wildfire S
  • Sistema operativo:
    Mac OS X 10.7
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #99 il: 12 Marzo 2012, 20:21:45 CET »
0
Ciao, mi sto affacciando alla programmazione per Android...dovrei prelevare da un DB SQLite dei valori, supponiamo per semplicità solamente LATITUDINE e LONGITUDINE, e vorrei visualizzare i punti in una mappa (fatta con google maps). Qualcuno sa darmi qualche dritta?
Grazie!

Offline ilcapitano4

  • Nuovo arrivato
  • *
  • Post: 17
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC WildFire
  • Sistema operativo:
    Ubuntu 11.10
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #100 il: 26 Marzo 2012, 19:35:07 CEST »
0
Ottimo Tutorial!
L'ho seguito e sono riuscito a fare quel che volevo fare, tranne una cosa!
Siccome ho cifrato il mio database con SQLite Cipher, vorrei trovare il file .db e quindi verificare che sia cifrato correttamente, il problema e che non riesco a trovare il db nella memoria!

Da quel che so dovrebbe salvarlo in /data/data/package.mia.app/databases/ ma non riesco a trovare tale cartella o comunque l'ho trovata ma il .db non c'è!
E' possibile che il database venga creato solo in memoria e quindi non venga creato nessun file?
E se è così potreste indicarmi un tutorial in cui viene spiegato come si crea un db con file?


Per essere più precisi l'albero delle directory dove cerco il db è quello nello screen-shot, ma niente ne nel primo "data", ne in altri.

Grazie!;D

Offline ilcapitano4

  • Nuovo arrivato
  • *
  • Post: 17
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC WildFire
  • Sistema operativo:
    Ubuntu 11.10
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #101 il: 27 Marzo 2012, 11:43:09 CEST »
0
Nessuno sa niente, a riguardo?
La procedura descritta nella guida, crea un DB fisico o solo in memoria ?
Bisogna specificare il path, affinché venga salvato in data/data ?


AGGIUNGO che naturalmente che ho scaricato e provato l'app del tutorial, e neanche in quel caso riesco a trovare il file del DB, ne in data/data/ ne in nessun altra cartella. A questo punto chiedo a chi ha fatto il tutorial se ha verificato la creazione del file DB e nel caso spiegarci come trovarlo, visto che non sono
l'unico ad avere questo problema.

Possibile soluzione che mi viene in mente, per chi si trova nel mio caso, è precaricare un DB vuoto in Assets e lavorare con quello, quindi poi
poterlo manipolare a piacimento.

Grazie.

Grazie. :-)
« Ultima modifica: 27 Marzo 2012, 12:14:00 CEST da ilcapitano4 »

Offline ciopper90

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    ideos
  • Sistema operativo:
    xp/7
R: [medio] Creazione e utilizzo di un database SQLite
« Risposta #102 il: 27 Marzo 2012, 15:31:01 CEST »
0
Il database si trova in /data/data/mio.package/databases/

Ho appena controllato e si e salvato...con che programma vai a cercare il database in memoria??

Offline ilcapitano4

  • Nuovo arrivato
  • *
  • Post: 17
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC WildFire
  • Sistema operativo:
    Ubuntu 11.10
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #103 il: 27 Marzo 2012, 15:52:23 CEST »
0
Ciao! Finalmente qualcuno a cui si è salvato è uscito fuori! :D

Allora io programmo su Eclipse, quindi la prima cosa che ho fatto è usare FileExplorer, poi siccome non mi fidavo ho installato sul mio
HTC WildFire un programma che si chiama Astro che ti permette appunto di navigare sia nel telefono che nella SD.
Inutile ribadire il risultato!:(

Ma tu che programma hai usato?

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 732
  • Respect: +177
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Nexus One - Wildfire - Magic
  • Market Developer Name:
    egsolutions
  • Sistema operativo:
    Ubuntu 11.04, Windows 7
Re:[medio] Creazione e utilizzo di un database SQLite
« Risposta #104 il: 27 Marzo 2012, 16:18:08 CEST »
0