Autore Topic: Problema lettura database  (Letto 532 volte)

Offline Dr.Joek

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Emulatore a gogo
  • Sistema operativo:
    Windows7, Windows8.1, Ubuntu15.3, Windows10
Problema lettura database
« il: 14 Luglio 2015, 04:05:55 CEST »
0
 :-)Ciao a tutti, mi sto passando l'estate facendo una applicazione, ancora sono all'inizio e quello che sto facendo è il fatto di memorizzare la lingua che l'utente ha scelto, per fare ciò ho creato un database, vi elenco tutti i file presenti dentro il progetto:
LocalDB1(dove ci sono le tabelle del database), LocalDB1Helper(che è l'helper), DataProvider(che svolge le funzioni di get e set per la lettura), seleziona_lingua.class(che è il file java da dove si seleziona la lingua(quindi che scrive)), seleziona1.class(che è una delle tantissime pagine a cui verrà applicato questo fatto di leggere il database(quindi che legge)) e ovviamente i vari layout per: seleziona_lingua e seleziona1
L'applicazione funziona perfettamente quando nel database l'applicazione scrive, ma quando deve leggere l'applicazione crasha.
Ho visto svariati video dove estraevano i dati da un database, ho anche visto in questo forum, ma nessuna guida mi è servita perché tutte le guide puntavano a creare dei layout che si aggiungevano ogni volta che c'era un nuovo dato, io invece devo solamente inserire un dato del database dentro una variabile, tutto qui.
Per farvi capire meglio le guide che intendo sono di questo genere:
[medio] Creazione e utilizzo di un database SQLite - Android Developers Italia
Spero che mi aiutate, grazie in anticipo :-) .


Ora vi posto i codici:
LogCat
Codice: [Seleziona]
07-13 21:52:00.571  28774-28774/? D/dalvikvm﹕ Late-enabling CheckJNI
07-13 21:52:00.599  28774-28774/? D/dalvikvm﹕ GC_FOR_ALLOC freed 67K, 1% free 16540K/16664K, paused 2ms, total 2ms
07-13 21:52:00.599  28774-28774/? I/dalvikvm-heap﹕ Grow heap (frag case) to 20.297MB for 4291068-byte allocation
07-13 21:52:00.603  28774-28783/? D/dalvikvm﹕ GC_FOR_ALLOC freed <1K, 1% free 20730K/20856K, paused 3ms, total 3ms
07-13 21:52:00.607  28774-28777/? D/dalvikvm﹕ GC_CONCURRENT freed 0K, 1% free 20730K/20856K, paused 2ms+0ms, total 3ms
07-13 21:52:00.815  28774-28774/? D/libEGL﹕ loaded /system/lib/egl/libEGL_genymotion.so
07-13 21:52:00.815  28774-28774/? D/﹕ HostConnection::get() New Host Connection established 0xb97bfad0, tid 28774
07-13 21:52:00.819  28774-28774/? D/libEGL﹕ loaded /system/lib/egl/libGLESv1_CM_genymotion.so
07-13 21:52:00.819  28774-28774/? D/libEGL﹕ loaded /system/lib/egl/libGLESv2_genymotion.so
07-13 21:52:00.899  28774-28774/? W/EGL_genymotion﹕ eglSurfaceAttrib not implemented
07-13 21:52:00.899  28774-28774/? E/OpenGLRenderer﹕ Getting MAX_TEXTURE_SIZE from GradienCache
07-13 21:52:00.907  28774-28774/? E/OpenGLRenderer﹕ Getting MAX_TEXTURE_SIZE from Caches::initConstraints()
07-13 21:52:00.907  28774-28774/? D/OpenGLRenderer﹕ Enabling debug mode 0
07-13 21:52:02.411  28774-28774/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed 8K, 1% free 20984K/21072K, paused 1ms, total 1ms
07-13 21:52:02.419  28774-28774/com.example.gioele.mathup I/dalvikvm-heap﹕ Grow heap (frag case) to 24.637MB for 4291068-byte allocation
07-13 21:52:02.419  28774-28783/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed <1K, 1% free 25173K/25264K, paused 2ms, total 2ms
07-13 21:52:02.475  28774-28774/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed 1K, 1% free 27734K/27820K, paused 2ms, total 2ms
07-13 21:52:02.571  28774-28774/com.example.gioele.mathup W/EGL_genymotion﹕ eglSurfaceAttrib not implemented
07-13 21:52:04.407  28774-28774/com.example.gioele.mathup E/DATABASE OPERATIONS﹕ Databse create / opened.....
07-13 21:52:04.407  28774-28774/com.example.gioele.mathup E/SQLiteLog﹕ (1) table lingua has no column named user_linguaggio
07-13 21:52:04.407  28774-28774/com.example.gioele.mathup E/SQLiteDatabase﹕ Error inserting user_linguaggio=inglese
    android.database.sqlite.SQLiteException: table lingua has no column named user_linguaggio (code 1): , while compiling: INSERT INTO lingua(user_linguaggio) VALUES (?)
            at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
            at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
            at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
            at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
            at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
            at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
            at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467)
            at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
            at com.example.gioele.mathup.LocalDB1Helper.addInformations(LocalDB1Helper.java:36)
            at com.example.gioele.mathup.seleziona_lingua$1.onClick(seleziona_lingua.java:44)
            at android.view.View.performClick(View.java:4240)
            at android.view.View$PerformClick.run(View.java:17721)
            at android.os.Handler.handleCallback(Handler.java:730)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
07-13 21:52:04.407  28774-28774/com.example.gioele.mathup E/DATABASE OPERATIONS﹕ One row inserted
07-13 21:52:04.859  28774-28774/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed 44K, 1% free 28641K/28744K, paused 1ms, total 1ms
07-13 21:52:04.895  28774-28774/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed 4437K, 15% free 27809K/32348K, paused 2ms, total 2ms
07-13 21:52:04.927  28774-28774/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed 62K, 4% free 31131K/32348K, paused 1ms, total 1ms
07-13 21:52:04.939  28774-28774/com.example.gioele.mathup E/DATABASE OPERATIONS﹕ Databse create / opened.....
07-13 21:52:04.943  28774-28774/com.example.gioele.mathup D/AndroidRuntime﹕ Shutting down VM
07-13 21:52:04.943  28774-28774/com.example.gioele.mathup W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xa4bd1648)
07-13 21:52:04.943  28774-28774/com.example.gioele.mathup E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gioele.mathup/com.example.gioele.mathup.seleziona1}: java.lang.NullPointerException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at com.example.gioele.mathup.seleziona1.onCreate(seleziona1.java:82)
            at android.app.Activity.performCreate(Activity.java:5133)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)

LocalDB1
Codice (Java): [Seleziona]
package com.example.gioele.mathup;

/**
 * Created by Gioele on 13/07/2015.
 */

public class LocalDB1 {


    public static abstract class NewLingua{
        public static final String USER_LINGUAGGIO = "user_linguaggio";
        public static final String TABLE_NAME = "lingua";

    }
}

LocalDB1Helper
Codice (Java): [Seleziona]
package com.example.gioele.mathup;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

/**
 * Created by Gioele on 13/07/2015.
 */

public class LocalDB1Helper extends SQLiteOpenHelper {
//--------------inizializzazione/creazione database------------------------------------------------------------
    private static final String DATABASE_NAME = "linguaggiodb";
    private static final int DATABASE_VERSIONS = 1;
    private static final String CREATE_QUERY =
    "CREATE TABLE "+ LocalDB1.NewLingua.TABLE_NAME+"("+LocalDB1.NewLingua.USER_LINGUAGGIO+"TEXT) ;";
    public LocalDB1Helper(Context context)
    {
        super(context,DATABASE_NAME,null,DATABASE_VERSIONS);
        Log.e("DATABASE OPERATIONS","Databse create / opened.....");
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_QUERY);
        Log.e("DATABASE OPERATIONS", "Table created");

    }
//------------comandi: leggi, scrivi----------------------------------------------------------------------
    //scrivi
    public void addInformations(String linguaggio, SQLiteDatabase db)
    {
        ContentValues contentValues = new ContentValues();
        contentValues.put(LocalDB1.NewLingua.USER_LINGUAGGIO,linguaggio);
        db.insert(LocalDB1.NewLingua.TABLE_NAME, null, contentValues);
        Log.e("DATABASE OPERATIONS", "One row inserted");
    }
    //leggi
    public Cursor getInformations(SQLiteDatabase db) {
        Cursor cursor;
        String[] uno = {LocalDB1.NewLingua.USER_LINGUAGGIO};
        Cursor c = db.query(LocalDB1.NewLingua.TABLE_NAME, uno, null, null, null, null, null);
        return c;
    }


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

    }


}

DataProvider
Codice (Java): [Seleziona]
package com.example.gioele.mathup;

/**
 * Created by Gioele on 14/07/2015.
 */

public class DataProvider {
    private String lingua;

    public String getLingua() {
        return lingua;
    }

    public void setLingua(String lingua) {
        this.lingua = lingua;
    }

    public DataProvider(String lingua){
        this.lingua = lingua;
    }

seleziona_lingua
Codice (Java): [Seleziona]
package com.example.gioele.mathup;

import com.example.gioele.mathup.util.SystemUiHider;

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;


public class seleziona_lingua extends Activity {
    String lingua1;
    Context context = this;
    LocalDB1Helper LocalDB1Helper;
    SQLiteDatabase SQLiteDatabase;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_seleziona_lingua);
        final ImageView image1 = (ImageView) findViewById(R.id.imageView1);
        final ImageView image2 = (ImageView) findViewById(R.id.imageView2);



        image1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String linguaggio = "inglese";
                LocalDB1Helper = new LocalDB1Helper(context);
                SQLiteDatabase = LocalDB1Helper.getWritableDatabase();
                LocalDB1Helper.addInformations(linguaggio,SQLiteDatabase);
                Toast.makeText(getBaseContext(),"Lenguage saved :)",Toast.LENGTH_LONG).show();
                LocalDB1Helper.close();


                image1.setAlpha(0.0f);
                lingua1 = "inglese";
                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                }
                Intent goseleziona = new Intent(getApplicationContext(), seleziona1.class);
                startActivity(goseleziona);
                finish();


            }
        });
        image2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String linguaggio = "italiano";
                LocalDB1Helper = new LocalDB1Helper(context);
                SQLiteDatabase = LocalDB1Helper.getWritableDatabase();
                LocalDB1Helper.addInformations(linguaggio, SQLiteDatabase);
                Toast.makeText(getBaseContext(),"Lenguage saved :)",Toast.LENGTH_LONG).show();
                LocalDB1Helper.close();


                image2.setAlpha(0.0f);
                lingua1 = "italiano";
                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                }
                Intent goseleziona = new Intent(getApplicationContext(), seleziona1.class);
                startActivity(goseleziona);
                finish();


            }
        });


    }


}

seleziona1
Codice (Java): [Seleziona]
package com.example.gioele.mathup;



import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.text.style.LineHeightSpan;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;



    public class seleziona1 extends Activity {
        String lingua;
        String uno;
        int linguaint;
        int differenzaY = 0;
        int differenzaY1 = 0;
        int differenzaY2 = 0;
        String differenzaY12 = "0";
        String differenzaY22 = "0";
        int livello = 0;
        int vai = 0;
        int premi = 0;
        SQLiteDatabase sqldatabase;
        LocalDB1Helper helper;
        Cursor cursor;
        DataAdapter dataadapter;





        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_seleziona1);
            final ImageView italiano1 = (ImageView) findViewById(R.id.imageView);
            final ImageView italiano2 = (ImageView) findViewById(R.id.imageView7);
            final ImageView inglese1 = (ImageView) findViewById(R.id.imageView8);
            final ImageView inglese2 = (ImageView) findViewById(R.id.imageView6);
            final ImageView tendina1 = (ImageView) findViewById(R.id.tendina1);
            final ImageView pergamena = (ImageView) findViewById(R.id.pergamena);
            final ImageView tendina2 = (ImageView) findViewById(R.id.tendina2);
            final ImageView tendina3 = (ImageView) findViewById(R.id.tendina3);
            final Button button = (Button) findViewById(R.id.button20);
            final RelativeLayout layout2 = (RelativeLayout) findViewById(R.id.layout2);
            final LinearLayout layout1 = (LinearLayout) findViewById(R.id.layout1);
            italiano2.setVisibility(View.INVISIBLE);
            inglese2.setVisibility(View.INVISIBLE);
            italiano1.setVisibility(View.INVISIBLE);
            inglese1.setVisibility(View.INVISIBLE);
            tendina2.setVisibility(View.INVISIBLE);
//apro il database

            helper = new LocalDB1Helper(getApplicationContext());
            sqldatabase = helper.getReadableDatabase();

//sfrutto il database
            //leggo il database

            lingua = cursor.getString(0);
            DataProvider dataprovider = new DataProvider (lingua);

            button.setText(lingua);




            final View touchView = findViewById(R.id.tendina1);
            touchView.setOnTouchListener(new View.OnTouchListener() {

                public boolean onTouch(View v, MotionEvent event) {

                    final int action = event.getAction();
                    switch (action & MotionEvent.ACTION_MASK) {

                        case MotionEvent.ACTION_DOWN: {
                            premi = 1;
                            tendina3.setVisibility(View.VISIBLE);


                            differenzaY12 = String.valueOf((int) event.getY());


                            differenzaY1 = Integer.valueOf(differenzaY12);


                            break;
                        }
                        case MotionEvent.ACTION_UP: {
                            premi = 0;
                            tendina3.setVisibility(View.INVISIBLE);




                        }

                        case MotionEvent.ACTION_MOVE: {


                            differenzaY22 = String.valueOf((int) event.getY());


                            differenzaY2 = Integer.parseInt(differenzaY22);
                            if (vai == 0) {
                                layout1.getLayoutParams().height = differenzaY2;
                                button.setText("lol");
                            }
                            if (differenzaY2 < 286) {
                                layout2.getLayoutParams().height = 0;
                            }

                            if (differenzaY2 >= 286) {
                                if (lingua.equals("inglese")) {
                                    inglese1.setVisibility(View.VISIBLE);
                                    inglese1.setOnClickListener(new View.OnClickListener() {

                                        @Override
                                        public void onClick(View v) {
                                            inglese1.setVisibility(View.INVISIBLE);
                                            inglese2.setVisibility(View.VISIBLE);
                                            try {
                                                Thread.sleep(200);
                                            } catch (InterruptedException g) {
                                            }
                                            Intent goforme = new Intent(getApplicationContext(), Forme.class);
                                            goforme.putExtra("lingua", lingua);
                                            startActivity(goforme);
                                            inglese1.setVisibility(View.INVISIBLE);
                                            inglese2.setVisibility(View.INVISIBLE);
                                            tendina2.setVisibility(View.INVISIBLE);
                                            layout1.getLayoutParams().height = 0;
                                            button.setText("lal");
                                            tendina1.setVisibility(View.VISIBLE);


                                        }
                                    });
                                }
                                if (lingua.equals("italiano")) {
                                    italiano1.setVisibility(View.VISIBLE);
                                    italiano1.setOnClickListener(new View.OnClickListener() {

                                        @Override
                                        public void onClick(View v) {
                                            italiano1.setVisibility(View.INVISIBLE);
                                            italiano2.setVisibility(View.VISIBLE);
                                            try {
                                                Thread.sleep(200);
                                            } catch (InterruptedException g) {
                                            }
                                            Intent goforme = new Intent(getApplicationContext(), Forme.class);
                                            goforme.putExtra("lingua", lingua);
                                            startActivity(goforme);
                                            italiano1.setVisibility(View.INVISIBLE);
                                            italiano2.setVisibility(View.INVISIBLE);
                                            tendina2.setVisibility(View.INVISIBLE);
                                            layout1.getLayoutParams().height = 0;
                                            button.setText("lal");
                                            tendina1.setVisibility(View.VISIBLE);


                                        }
                                    });
                                }
                                layout2.getLayoutParams().height = differenzaY2 - 286;

                            }


                            if (premi == 0) {
                                differenzaY = differenzaY2 - differenzaY1;
                                if (differenzaY > 300) {
                                    button.setText("lel");

                                    while (livello <= 1725) {
                                        vai = 1;

                                        livello = livello + 1;
                                        layout1.getLayoutParams().height = livello;

                                    }
                                } else {
                                    layout1.getLayoutParams().height = 0;
                                    button.setText("lal");

                                }
                            }
                            if (livello >= 1725) {
                                tendina2.setVisibility(View.VISIBLE);
                                tendina1.setVisibility(View.INVISIBLE);
                                differenzaY = 0;
                                differenzaY1 = 0;
                                differenzaY2 = 0;
                                differenzaY22 = "1725";
                                differenzaY12 = "1725";
                                vai = 0;
                                livello = 0;
                                premi = 0;


                            }

                            break;
                        }
                    }

                    return true;

                }

            });

            final View touchView2 = findViewById(R.id.tendina2);
            touchView2.setOnTouchListener(new View.OnTouchListener() {

                public boolean onTouch(View v, MotionEvent event) {

                    final int action = event.getAction();
                    switch (action & MotionEvent.ACTION_MASK) {

                        case MotionEvent.ACTION_DOWN: {
                            tendina1.setVisibility(View.VISIBLE);
                            tendina2.setVisibility(View.INVISIBLE);
                            differenzaY = 0;
                            differenzaY1 = 0;
                            differenzaY2 = 0;
                            differenzaY22 = "0";
                            differenzaY12 = "0";
                            vai = 0;
                            livello = 0;
                            premi = 0;
                            layout1.getLayoutParams().height = 0;
                            button.setText("lal");
                            italiano1.setVisibility(View.INVISIBLE);
                            italiano2.setVisibility(View.INVISIBLE);
                            inglese1.setVisibility(View.INVISIBLE);
                            inglese2.setVisibility(View.INVISIBLE);

                            break;
                        }
                    }

                        return true;
                    }



            });



        }

    }
« Ultima modifica: 14 Luglio 2015, 14:05:54 CEST da Dr.Joek »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problema con il database
« Risposta #1 il: 14 Luglio 2015, 08:02:41 CEST »
+1
Secondo me non ti crea la tabella, perchè manca uno spazio tra LocalDB1.NewLingua.USER_LINGUAGGIO e TEXT. Comunque puoi vederlo facilmente scaricando il database in locale e aprendolo con un sqlite manager.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Dr.Joek

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Emulatore a gogo
  • Sistema operativo:
    Windows7, Windows8.1, Ubuntu15.3, Windows10
Re:Problema con il database
« Risposta #2 il: 14 Luglio 2015, 12:45:57 CEST »
0
Dici che dovrei mettere cosi?
Codice (Java): [Seleziona]
LocalDB1.NewLingua.USER_LINGUAGGIO+" TEXT) ;";
Comunque non è problema di salvataggio ho controllato e funziona.. E' il codice che dovrebbe leggerlo che fa crashare l'applicazione.

Codice: [Seleziona]
at com.example.gioele.mathup.seleziona1.onCreate(seleziona1.java:82)La LogCat dice che l'errore è in questa riga:
Codice (javal): [Seleziona]
lingua = cursor.getString(0);Che è la riga dove il cursor prende il primo elemento della sua lista e lo trasferisce nella variabile quindi l'errore non è nella scrittura ma nella lettura, preciso che la variabile lingua è di tipo String, il dato nel database è di tipo String e quindi non sto  capendo il motivo del crash.
« Ultima modifica: 14 Luglio 2015, 13:16:49 CEST da Dr.Joek »

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Problema lettura database
« Risposta #3 il: 14 Luglio 2015, 17:13:51 CEST »
+1
Il codice ha diversi problemi in realtà, bradipao ne ha visto al volo uno che è molto probabilmente la causa di questa eccezione:

Codice (Java): [Seleziona]
07-13 21:52:04.407  28774-28774/com.example.gioele.mathup E/SQLiteDatabase﹕ Error inserting user_linguaggio=inglese
Questa invece su cui stai puntando l'attenzione tu:

Codice (Java): [Seleziona]
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gioele.mathup/com.example.gioele.mathup.seleziona1}: java.lang.NullPointerException
E' dovuta al fatto che accedi a cursor senza averlo mai inizializzato prima (e quindi è null).

Offline Dr.Joek

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Emulatore a gogo
  • Sistema operativo:
    Windows7, Windows8.1, Ubuntu15.3, Windows10
Re:Problema lettura database
« Risposta #4 il: 15 Luglio 2015, 00:01:02 CEST »
0
Ok ho modificato come mi è stato detto, e ora l' errore che non inseriva la riga nel database non lo fa più e il codice l'ho modificato in:

Codice (Java): [Seleziona]
"CREATE TABLE "+ LocalDB1.NewLingua.TABLE_NAME+" (" + LocalDB1.NewLingua.USER_LINGUAGGIO + " TEXT ) ;";
ed ecco la LogCat:
Codice: [Seleziona]
07-14 17:58:58.800  19117-19117/? D/dalvikvm﹕ Late-enabling CheckJNI
07-14 17:58:58.820  19117-19123/? D/dalvikvm﹕ Debugger has detached; object registry had 1 entries
07-14 17:58:58.840  19117-19117/? D/dalvikvm﹕ GC_FOR_ALLOC freed 41K, 1% free 16540K/16640K, paused 7ms, total 7ms
07-14 17:58:58.908  19117-19117/? I/dalvikvm-heap﹕ Grow heap (frag case) to 20.297MB for 4291068-byte allocation
07-14 17:58:58.916  19117-19126/? D/dalvikvm﹕ GC_FOR_ALLOC freed <1K, 1% free 20730K/20832K, paused 3ms, total 3ms
07-14 17:58:58.916  19117-19120/? D/dalvikvm﹕ GC_CONCURRENT freed <1K, 1% free 20730K/20832K, paused 0ms+1ms, total 2ms
07-14 17:58:58.980  19117-19117/? D/libEGL﹕ loaded /system/lib/egl/libEGL_genymotion.so
07-14 17:58:58.980  19117-19117/? D/﹕ HostConnection::get() New Host Connection established 0xb92b64b8, tid 19117
07-14 17:58:58.984  19117-19117/? D/libEGL﹕ loaded /system/lib/egl/libGLESv1_CM_genymotion.so
07-14 17:58:58.984  19117-19117/? D/libEGL﹕ loaded /system/lib/egl/libGLESv2_genymotion.so
07-14 17:58:59.012  19117-19117/? W/EGL_genymotion﹕ eglSurfaceAttrib not implemented
07-14 17:58:59.012  19117-19117/? E/OpenGLRenderer﹕ Getting MAX_TEXTURE_SIZE from GradienCache
07-14 17:58:59.016  19117-19117/? E/OpenGLRenderer﹕ Getting MAX_TEXTURE_SIZE from Caches::initConstraints()
07-14 17:58:59.016  19117-19117/? D/OpenGLRenderer﹕ Enabling debug mode 0
07-14 17:59:00.464  19117-19117/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed 8K, 1% free 20983K/21048K, paused 3ms, total 3ms
07-14 17:59:00.472  19117-19117/com.example.gioele.mathup I/dalvikvm-heap﹕ Grow heap (frag case) to 24.637MB for 4291068-byte allocation
07-14 17:59:00.496  19117-19117/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed <1K, 1% free 25173K/25240K, paused 2ms, total 2ms
07-14 17:59:00.528  19117-19117/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed <1K, 1% free 27734K/27796K, paused 2ms, total 3ms
07-14 17:59:00.556  19117-19117/com.example.gioele.mathup W/EGL_genymotion﹕ eglSurfaceAttrib not implemented
07-14 17:59:01.124  19117-19117/com.example.gioele.mathup E/DATABASE OPERATIONS﹕ Databse create / opened.....
07-14 17:59:01.124  19117-19117/com.example.gioele.mathup E/DATABASE OPERATIONS﹕ One row inserted
07-14 17:59:01.540  19117-19117/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed 14K, 1% free 28634K/28708K, paused 5ms, total 6ms
07-14 17:59:01.584  19117-19117/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed 4431K, 14% free 27808K/32312K, paused 2ms, total 2ms
07-14 17:59:01.624  19117-19117/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed 62K, 4% free 31130K/32312K, paused 2ms, total 2ms
07-14 17:59:01.624  19117-19117/com.example.gioele.mathup E/DATABASE OPERATIONS﹕ Databse create / opened.....
07-14 17:59:01.632  19117-19117/com.example.gioele.mathup E/DATABASE OPERATIONS﹕ AVVIATO
07-14 17:59:01.632  19117-19117/com.example.gioele.mathup D/AndroidRuntime﹕ Shutting down VM
07-14 17:59:01.632  19117-19117/com.example.gioele.mathup W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xa4c16648)
07-14 17:59:01.632  19117-19117/com.example.gioele.mathup E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gioele.mathup/com.example.gioele.mathup.seleziona1}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 9
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 9
            at android.database.AbstractCursor.checkPosition(AbstractCursor.java:424)
            at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
            at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
            at com.example.gioele.mathup.seleziona1.onCreate(seleziona1.java:99)
            at android.app.Activity.performCreate(Activity.java:5133)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)

Come si può notare però ancora persiste il problema che non legge, ora ho fatto delle modifiche al codice per la scrittura, dove inizializza il cursor:
Codice (Java): [Seleziona]
package com.example.gioele.mathup;



import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.text.style.LineHeightSpan;
import android.util.Log;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;



    public class seleziona1 extends Activity {
        String lingua1;
        String uno;
        int linguaint;
        int differenzaY = 0;
        int differenzaY1 = 0;
        int differenzaY2 = 0;
        String differenzaY12 = "0";
        String differenzaY22 = "0";
        int livello = 0;
        int vai = 0;
        int premi = 0;

        SQLiteDatabase sqldatabase;
        LocalDB1Helper helper;
        Cursor c;
        DataAdapter dataadapter;








        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_seleziona1);
            final ImageView italiano1 = (ImageView) findViewById(R.id.imageView);
            final ImageView italiano2 = (ImageView) findViewById(R.id.imageView7);
            final ImageView inglese1 = (ImageView) findViewById(R.id.imageView8);
            final ImageView inglese2 = (ImageView) findViewById(R.id.imageView6);
            final ImageView tendina1 = (ImageView) findViewById(R.id.tendina1);
            final ImageView pergamena = (ImageView) findViewById(R.id.pergamena);
            final ImageView tendina2 = (ImageView) findViewById(R.id.tendina2);
            final ImageView tendina3 = (ImageView) findViewById(R.id.tendina3);
            final Button button = (Button) findViewById(R.id.button20);
            final RelativeLayout layout2 = (RelativeLayout) findViewById(R.id.layout2);
            final LinearLayout layout1 = (LinearLayout) findViewById(R.id.layout1);
            italiano2.setVisibility(View.INVISIBLE);
            inglese2.setVisibility(View.INVISIBLE);
            italiano1.setVisibility(View.INVISIBLE);
            inglese1.setVisibility(View.INVISIBLE);
            tendina2.setVisibility(View.INVISIBLE);
//apro il database

            helper = new LocalDB1Helper(getApplicationContext());
            sqldatabase = helper.getReadableDatabase();



//sfrutto il database
            //leggo il database
            Cursor c=helper.getInformations(sqldatabase); // query
            startManagingCursor(c);






            int linguaint=c.getColumnIndex(LocalDB1.NewLingua.USER_LINGUAGGIO);

            DataProvider dataprovider = new DataProvider (lingua1);
            lingua1 = c.getString(linguaint);


            button.setText(lingua1);





            final View touchView = findViewById(R.id.tendina1);
            touchView.setOnTouchListener(new View.OnTouchListener() {

                public boolean onTouch(View v, MotionEvent event) {

                    final int action = event.getAction();
                    switch (action & MotionEvent.ACTION_MASK) {

                        case MotionEvent.ACTION_DOWN: {
                            premi = 1;
                            tendina3.setVisibility(View.VISIBLE);


                            differenzaY12 = String.valueOf((int) event.getY());


                            differenzaY1 = Integer.valueOf(differenzaY12);


                            break;
                        }
                        case MotionEvent.ACTION_UP: {
                            premi = 0;
                            tendina3.setVisibility(View.INVISIBLE);




                        }

                        case MotionEvent.ACTION_MOVE: {


                            differenzaY22 = String.valueOf((int) event.getY());


                            differenzaY2 = Integer.parseInt(differenzaY22);
                            if (vai == 0) {
                                layout1.getLayoutParams().height = differenzaY2;
                                button.setText("lol");
                            }
                            if (differenzaY2 < 286) {
                                layout2.getLayoutParams().height = 0;
                            }

                            if (differenzaY2 >= 286) {
                                if (lingua1.equals("inglese")) {
                                    inglese1.setVisibility(View.VISIBLE);
                                    inglese1.setOnClickListener(new View.OnClickListener() {

                                        @Override
                                        public void onClick(View v) {
                                            inglese1.setVisibility(View.INVISIBLE);
                                            inglese2.setVisibility(View.VISIBLE);
                                            try {
                                                Thread.sleep(200);
                                            } catch (InterruptedException g) {
                                            }
                                            Intent goforme = new Intent(getApplicationContext(), Forme.class);
                                            goforme.putExtra("lingua", lingua1);
                                            startActivity(goforme);
                                            inglese1.setVisibility(View.INVISIBLE);
                                            inglese2.setVisibility(View.INVISIBLE);
                                            tendina2.setVisibility(View.INVISIBLE);
                                            layout1.getLayoutParams().height = 0;
                                            button.setText("lal");
                                            tendina1.setVisibility(View.VISIBLE);


                                        }
                                    });
                                }
                                if (lingua1.equals("italiano")) {
                                    italiano1.setVisibility(View.VISIBLE);
                                    italiano1.setOnClickListener(new View.OnClickListener() {

                                        @Override
                                        public void onClick(View v) {
                                            italiano1.setVisibility(View.INVISIBLE);
                                            italiano2.setVisibility(View.VISIBLE);
                                            try {
                                                Thread.sleep(200);
                                            } catch (InterruptedException g) {
                                            }
                                            Intent goforme = new Intent(getApplicationContext(), Forme.class);
                                            goforme.putExtra("lingua", lingua1);
                                            startActivity(goforme);
                                            italiano1.setVisibility(View.INVISIBLE);
                                            italiano2.setVisibility(View.INVISIBLE);
                                            tendina2.setVisibility(View.INVISIBLE);
                                            layout1.getLayoutParams().height = 0;
                                            button.setText("lal");
                                            tendina1.setVisibility(View.VISIBLE);


                                        }
                                    });
                                }
                                layout2.getLayoutParams().height = differenzaY2 - 286;

                            }


                            if (premi == 0) {
                                differenzaY = differenzaY2 - differenzaY1;
                                if (differenzaY > 300) {
                                    button.setText("lel");

                                    while (livello <= 1725) {
                                        vai = 1;

                                        livello = livello + 1;
                                        layout1.getLayoutParams().height = livello;

                                    }
                                } else {
                                    layout1.getLayoutParams().height = 0;
                                    button.setText("lal");

                                }
                            }
                            if (livello >= 1725) {
                                tendina2.setVisibility(View.VISIBLE);
                                tendina1.setVisibility(View.INVISIBLE);
                                differenzaY = 0;
                                differenzaY1 = 0;
                                differenzaY2 = 0;
                                differenzaY22 = "1725";
                                differenzaY12 = "1725";
                                vai = 0;
                                livello = 0;
                                premi = 0;


                            }

                            break;
                        }
                    }

                    return true;

                }

            });

            final View touchView2 = findViewById(R.id.tendina2);
            touchView2.setOnTouchListener(new View.OnTouchListener() {

                public boolean onTouch(View v, MotionEvent event) {

                    final int action = event.getAction();
                    switch (action & MotionEvent.ACTION_MASK) {

                        case MotionEvent.ACTION_DOWN: {
                            tendina1.setVisibility(View.VISIBLE);
                            tendina2.setVisibility(View.INVISIBLE);
                            differenzaY = 0;
                            differenzaY1 = 0;
                            differenzaY2 = 0;
                            differenzaY22 = "0";
                            differenzaY12 = "0";
                            vai = 0;
                            livello = 0;
                            premi = 0;
                            layout1.getLayoutParams().height = 0;
                            button.setText("lal");
                            italiano1.setVisibility(View.INVISIBLE);
                            italiano2.setVisibility(View.INVISIBLE);
                            inglese1.setVisibility(View.INVISIBLE);
                            inglese2.setVisibility(View.INVISIBLE);

                            break;
                        }
                    }

                        return true;
                    }



            });



        }



    }
Codice: [Seleziona]
at com.example.gioele.mathup.seleziona1.onCreate(seleziona1.java:99)Però come si può notate nella LogCat ancora da problemi nel leggere la riga 99 cioè:
Codice (Java): [Seleziona]
lingua1 = c.getString(linguaint);E poi da questo errore che non so che significa...
Codice: [Seleziona]
Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 9
            at android.database.AbstractCursor.checkPosition(AbstractCursor.java:424)

Potete aiutarmi?
Grazie del tempo dedicatomi.

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Problema lettura database
« Risposta #5 il: 15 Luglio 2015, 09:02:25 CEST »
+2
Hai cancellato la tabella dopo aver modificato il CREATE TABLE? Perché se non l'hai fatto il nome della colonna risulterà ancora quello sbagliato.
Questo spiegherebbe l'errore che hai:

Codice (Java): [Seleziona]
int linguaint=c.getColumnIndex(LocalDB1.NewLingua.USER_LINGUAGGIO);
lingua1 = c.getString(linguaint);

getColumnIndex torna -1 solo quando non trova per qualche motivo la colonna.

Per scrupolo prova a fare così:
Codice (Java): [Seleziona]
int linguaint=c.getColumnIndex("user_linguaggioTEXT");
Se non ti da più errore stai ancora usando la tabella con il nome di colonna sbagliato.

Offline Dr.Joek

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Emulatore a gogo
  • Sistema operativo:
    Windows7, Windows8.1, Ubuntu15.3, Windows10
Re:Problema lettura database
« Risposta #6 il: 15 Luglio 2015, 15:26:48 CEST »
0
Si quando ho spostato il text ho anche cancellato e ricreato la tabella con un nome diverso...
ora però da un'altro errore:

Tabella:
Codice (Java): [Seleziona]
package com.example.gioele.mathup;

/**
 * Created by Gioele on 13/07/2015.
 */

public class LocalDB1 {


    public static abstract class tabella1{
        public static final String USER_LINGUAGGIO = "user_linguaggio";
        public static final String TABLE_NAME = "TABELLA1";
       



    }
}

LogCat:
Codice (Java): [Seleziona]
07-15 09:23:07.042  26874-26874/? D/dalvikvm﹕ Late-enabling CheckJNI
07-15 09:23:07.058  26874-26880/? D/dalvikvm﹕ Debugger has detached; object registry had 1 entries
07-15 09:23:07.066  26874-26874/? D/dalvikvm﹕ GC_FOR_ALLOC freed 41K, 1% free 16540K/16640K, paused 4ms, total 4ms
07-15 09:23:07.070  26874-26874/? I/dalvikvm-heap﹕ Grow heap (frag case) to 20.297MB for 4291068-byte allocation
07-15 09:23:07.074  26874-26883/? D/dalvikvm﹕ GC_FOR_ALLOC freed <1K, 1% free 20730K/20832K, paused 5ms, total 5ms
07-15 09:23:07.078  26874-26877/? D/dalvikvm﹕ GC_CONCURRENT freed 0K, 1% free 20730K/20832K, paused 2ms+1ms, total 5ms
07-15 09:23:07.278  26874-26874/? D/libEGL﹕ loaded /system/lib/egl/libEGL_genymotion.so
07-15 09:23:07.278  26874-26874/? D/﹕ HostConnection::get() New Host Connection established 0xb7a94758, tid 26874
07-15 09:23:07.278  26874-26874/? D/libEGL﹕ loaded /system/lib/egl/libGLESv1_CM_genymotion.so
07-15 09:23:07.278  26874-26874/? D/libEGL﹕ loaded /system/lib/egl/libGLESv2_genymotion.so
07-15 09:23:07.362  26874-26874/? W/EGL_genymotion﹕ eglSurfaceAttrib not implemented
07-15 09:23:07.362  26874-26874/? E/OpenGLRenderer﹕ Getting MAX_TEXTURE_SIZE from GradienCache
07-15 09:23:07.370  26874-26874/? E/OpenGLRenderer﹕ Getting MAX_TEXTURE_SIZE from Caches::initConstraints()
07-15 09:23:07.370  26874-26874/? D/OpenGLRenderer﹕ Enabling debug mode 0
07-15 09:23:10.522  26874-26874/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed 8K, 1% free 20983K/21052K, paused 1ms, total 1ms
07-15 09:23:10.526  26874-26874/com.example.gioele.mathup I/dalvikvm-heap﹕ Grow heap (frag case) to 24.637MB for 4291068-byte allocation
07-15 09:23:10.526  26874-26883/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed <1K, 1% free 25174K/25244K, paused 2ms, total 2ms
07-15 09:23:10.582  26874-26874/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed 1K, 1% free 27734K/27800K, paused 2ms, total 2ms
07-15 09:23:10.674  26874-26874/com.example.gioele.mathup W/EGL_genymotion﹕ eglSurfaceAttrib not implemented
07-15 09:23:11.790  26874-26874/com.example.gioele.mathup E/DATABASE OPERATIONS﹕ Databse create / opened.....
07-15 09:23:11.794  26874-26874/com.example.gioele.mathup E/SQLiteLog﹕ (1) no such table: TABELLA1
07-15 09:23:11.794  26874-26874/com.example.gioele.mathup E/SQLiteDatabase﹕ Error inserting user_linguaggio=inglese
    android.database.sqlite.SQLiteException: no such table: TABELLA1 (code 1): , while compiling: INSERT INTO TABELLA1(user_linguaggio) VALUES (?)
            at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
            at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
            at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
            at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
            at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
            at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
            at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467)
            at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
            at com.example.gioele.mathup.LocalDB1Helper.addInformations(LocalDB1Helper.java:36)
            at com.example.gioele.mathup.seleziona_lingua$1.onClick(seleziona_lingua.java:44)
            at android.view.View.performClick(View.java:4240)
            at android.view.View$PerformClick.run(View.java:17721)
            at android.os.Handler.handleCallback(Handler.java:730)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
07-15 09:23:11.794  26874-26874/com.example.gioele.mathup E/DATABASE OPERATIONS﹕ One row inserted
07-15 09:23:12.202  26874-26874/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed 39K, 1% free 28641K/28740K, paused 1ms, total 2ms
07-15 09:23:12.226  26874-26874/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed 4438K, 15% free 27809K/32344K, paused 2ms, total 2ms
07-15 09:23:12.266  26874-26874/com.example.gioele.mathup D/dalvikvm﹕ GC_FOR_ALLOC freed 62K, 4% free 31131K/32344K, paused 1ms, total 1ms
07-15 09:23:12.270  26874-26874/com.example.gioele.mathup E/DATABASE OPERATIONS﹕ Databse create / opened.....
07-15 09:23:12.270  26874-26874/com.example.gioele.mathup E/DATABASE OPERATIONS﹕ AVVIATO
07-15 09:23:12.270  26874-26874/com.example.gioele.mathup E/SQLiteLog﹕ (1) no such table: TABELLA1
07-15 09:23:12.270  26874-26874/com.example.gioele.mathup D/AndroidRuntime﹕ Shutting down VM
07-15 09:23:12.270  26874-26874/com.example.gioele.mathup W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xa4c16648)
07-15 09:23:12.274  26874-26874/com.example.gioele.mathup E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gioele.mathup/com.example.gioele.mathup.seleziona1}: android.database.sqlite.SQLiteException: no such table: TABELLA1 (code 1): , while compiling: SELECT user_linguaggio FROM TABELLA1
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.database.sqlite.SQLiteException: no such table: TABELLA1 (code 1): , while compiling: SELECT user_linguaggio FROM TABELLA1
            at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
            at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
            at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
            at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
            at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
            at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
            at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
            at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314)
            at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1161)
            at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1032)
            at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1200)
            at com.example.gioele.mathup.LocalDB1Helper.getInformations(LocalDB1Helper.java:45)
            at com.example.gioele.mathup.seleziona1.onCreate(seleziona1.java:88)
            at android.app.Activity.performCreate(Activity.java:5133)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)

Onestamente non sto capendo più quasi niente sono troppo confuso... che errore è? Ho provato a ricreare l'helper, ricreare di nuovo la tabella, ma da quando ho ricreato la tabella chiamandola tabella1 mi da questo errore:
Codice (Java): [Seleziona]
Caused by: android.database.sqlite.SQLiteException: no such table: TABELLA1 (code 1): , while compiling: SELECT user_linguaggio FROM TABELLA1

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problema lettura database
« Risposta #7 il: 15 Luglio 2015, 15:39:28 CEST »
+1
Ho provato a ricreare l'helper, ricreare di nuovo la tabella, ma da quando ho ricreato la tabella chiamandola tabella1 mi da questo errore:
Codice (Java): [Seleziona]
Caused by: android.database.sqlite.SQLiteException: no such table: TABELLA1 (code 1): , while compiling: SELECT user_linguaggio FROM TABELLA1

Come ti ha accennato brevemente Sakazaki, se modifichi la query di creazione tabella, devi di fatto cancellare il database dal terminale (sia esso emulatore o terminale fisico). Perchè la OnCreate() dell'helper (quella che contiene la CREATE TABLE) viene richiamata SOLO se non è presente un database sqlite.

Puoi farlo semplicemente con il comando "cancella dati" dell'app in gestione applicazioni. Fatto quello, lanci la nuova app, che non trovando nessun database esistente provvede a crearlo con la CREATE aggiornata.

Ti rinnovo anche il mio invito originario: scarica il database dal terminale con un ADB PULL e controlla come è fatto e cosa contiene usando un SqliteManager qualsiasi. Così risolvi in 3 minuti problemi su cui stai passando giorni.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Dr.Joek

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Emulatore a gogo
  • Sistema operativo:
    Windows7, Windows8.1, Ubuntu15.3, Windows10
Re:Problema lettura database
« Risposta #8 il: 15 Luglio 2015, 15:55:46 CEST »
0
Fatto c'è solo un problema il suggerimento si Sakazaki non ha funzionato, ho cancellato la memoria e ora ritorna l'errore di prima:
Codice (Java): [Seleziona]
07-15 09:52:37.881    2190-2190/com.example.gioele.mathup E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.gioele.mathup, PID: 2190
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gioele.mathup/com.example.gioele.mathup.seleziona1}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
            at android.database.AbstractCursor.checkPosition(AbstractCursor.java:426)
            at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
            at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
            at com.example.gioele.mathup.seleziona1.onCreate(seleziona1.java:98)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)

Che posso fare?


Post unito: [time]15 Luglio 2015, 15:58:11 CEST[/time]
Può darsi che dipenda da questo:


Post unito: 15 Luglio 2015, 15:58:31 CEST
Cioè startManagingCurso è tagliato...
« Ultima modifica: 15 Luglio 2015, 15:58:31 CEST da Dr.Joek, Reason: Merged DoublePost »

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Problema lettura database
« Risposta #9 il: 15 Luglio 2015, 16:09:58 CEST »
+1
Quoto bradipao
scarica il database dal terminale con un ADB PULL e controlla come è fatto e cosa contiene usando un SqliteManager qualsiasi

L'unico caso per cui getColumnIndex torna -1 è che la colonna cercata non esiste nel cursore.

A riprova:
Codice (Java): [Seleziona]
if(c.moveToFirst()) // che male non fa
  lingua1 = c.getString(0); // non dovrebbe "esplodere"

Offline Dr.Joek

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Emulatore a gogo
  • Sistema operativo:
    Windows7, Windows8.1, Ubuntu15.3, Windows10
Re:Problema lettura database
« Risposta #10 il: 15 Luglio 2015, 17:50:12 CEST »
0
Quoto Sakazaki per il codice:
Codice (Java): [Seleziona]
if(c.moveToFirst()) // che male non fa
  lingua1 = c.getString(0); // non dovrebbe "esplodere"

Onestamente non ci avevo pensato, che il cursore prima di farlo agire gli si dice di andare sul primo ovviamente se riesce ad andare sul primo non darà più -1.
Quindi grazie della risposta.
RISOLTO.