0

I am trying to get a value from SQLite to show it in a textView called "tvPackMoney".

        String packMoney = Float.toString(daoHelperPacks.sendPackStats().getPackMoney());
        tvPackMoney.setText(packMoney);

The method to find the value in the database is this:

public ObjectPack sendPackStats (){

        SQLiteDatabase db = this.getWritableDatabase();

        String currentPlayer = ClassSharedPreferences.read(ClassSharedPreferences.currentPlayer, "");//read string in shared preference.
        String currentPack = ClassSharedPreferences.read(ClassSharedPreferences.currentPack, "");//read string in shared preference.

        Cursor datos = db.rawQuery("SELECT MONEY_PACK FROM "+MI_TABLA+" WHERE PLAYER_PACK ='"+currentPlayer+"' AND NAME_PACK ='"+currentPack+"' FROM "+MI_TABLA+")",null);

        ObjectPack objectPack = new ObjectPack();

        if (datos.moveToFirst()){
            objectPack.setPackMoney(datos.getFloat(0));
        }
        db.close();
        return objectPack;
    }

I used debugger and I get force close when the following line is executed:

String packMoney = Float.toString(daoHelperPacks.sendPackStats().getPackMoney());

But writing a value directly there is no problem, everything works.

String packMoney = Float.toString((float) 1.11);

Someone can see what I am doing wrong? Thanks in advance.

Here the logcat:

W/actual.pregres: Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->isMainThread()Z (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->isMainThread()Z (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteSession;->hasTransaction()Z (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/content/ContentValues;->isEmpty()Z (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteSession;->hasConnection()Z (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->isInMemoryDatabase()Z (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->mLock:Ljava/lang/Object; (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabaseConfiguration;->isInMemoryDb()Z (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->mLock:Ljava/lang/Object; (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->mLock:Ljava/lang/Object; (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->isReadOnlyLocked()Z (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->mLock:Ljava/lang/Object; (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->throwIfNotOpenLocked()V (greylist-max-o, linking, denied)
W/actual.pregres: Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->dispose(Z)V (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->onCorruption()V (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->getLabel()Ljava/lang/String; (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->DEBUG_ONEPLUS:Z (blacklist, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->mCursorFactory:Landroid/database/sqlite/SQLiteDatabase$CursorFactory; (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->mLock:Ljava/lang/Object; (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->throwIfNotOpenLocked()V (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->mLock:Ljava/lang/Object; (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->throwIfNotOpenLocked()V (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->mLock:Ljava/lang/Object; (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->throwIfNotOpenLocked()V (greylist-max-o, linking, denied)
    Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->mLock:Ljava/lang/Object; (greylist-max-o, linking, denied)
W/actual.pregres: Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->throwIfNotOpenLocked()V (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteSession;->setTransactionSuccessful()V (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/content/ContentValues;->isEmpty()Z (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->getThreadDefaultConnectionFlags(Z)I (greylist-max-o, linking, denied)
    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->yieldIfContendedHelper(ZJ)Z (greylist-max-o, linking, denied)
I/chatty: uid=10443(com.doctoractual.pregresp) ection primary] identical 1 line
W/actual.pregres: Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->yieldIfContendedHelper(ZJ)Z (greylist-max-o, linking, denied)
D/ViewRootImpl[ManagerActivity]: windowFocusChanged hasFocus=false inTouchMode=true
W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@8b9e305
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.doctoractual.pregresp, PID: 30713
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.doctoractual.pregresp/com.doctoractual.pregresp.SuccessErrorGameActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'com.doctoractual.pregresp.ObjectPack com.doctoractual.pregresp.DAOHelperPacks.sendPackStats()' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3375)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3514)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2110)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7697)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.doctoractual.pregresp.ObjectPack com.doctoractual.pregresp.DAOHelperPacks.sendPackStats()' on a null object reference
        at com.doctoractual.pregresp.SuccessErrorGameActivity.onCreate(SuccessErrorGameActivity.java:48)
        at android.app.Activity.performCreate(Activity.java:7815)
        at android.app.Activity.performCreate(Activity.java:7804)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1325)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3350)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3514) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2110) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7697) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) 
I/Process: Sending signal. PID: 30713 SIG: 9
Disconnected from the target VM, address: 'localhost:56772', transport: 'socket'

Edited: SOLUTION

The query had a mistake

WRONG QUERY

Cursor datos = db.rawQuery("SELECT MONEY_PACK FROM "+MI_TABLA+" WHERE PLAYER_PACK ='"+currentPlayer+"' AND NAME_PACK ='"+currentPack+"' FROM "+MI_TABLA+")",null);

CORRECT QUERY

Cursor datos = db.rawQuery("SELECT MONEY_PACK FROM "+MI_TABLA+" WHERE PLAYER_PACK='"+currentPlayer+"' AND NAME_PACK='"+currentPack+"'",null);
Javierungo
  • 81
  • 9

2 Answers2

0

SQLiteDatabase queries can be a heavy duty especially if the table is large.

I would start threading stuff if you have a lot of operations going on, like a bunch of queries, or complicated queries that span several tables.

sometimes even if the table isn't that big, on some devices it can cause your application to lag. so I recommend doing this in a separate thread preferably using a Loader to avoid handling all the stuff related to your activity's life cycle.

you can get more help from this link

Pouria Hemi
  • 706
  • 5
  • 15
  • 30
  • Thanks a lot for your answer. Very useful. You were right. The problem was wrong query to SQLite. It helped me to learn. – Javierungo Jun 30 '21 at 16:51
0

I'm assuming the issue is that you are calling this.getWritableDatabase() method in your sendPackStats() method. It should be this.getReadableDatabase(). If it does not fix the problem

  1. Your query could be wrong in terms of syntax.
  2. Test to see if your sendPackStatus() is returning any value.
  3. If you are calling your sendPackStatus() asynchronously, make sure you are not setting the text, before you have any value in String packMoney. Happy Coding!
Sai H.
  • 66
  • 5