I am trying to retrieve data from SQLite database using AndroidStudio 3.0.1 but getting the following exception. I have been searching for the Error but couldn't found a good solution. Here is My Code.
inserting Data to Database
public boolean insertCoins(int coins){
SQLiteDatabase db=this.getReadableDatabase ();
ContentValues values=new ContentValues ();
values.put(Col1,coins);
long result=db.insert(Table_Name,null,values);
if (result != -1) {
return true;
} else {
return false;
}
}
The code is giving Error Here
public Cursor getData(){
Cursor res = this.getReadableDatabase ().rawQuery("select sum("+Col1+") from "+Table_Name+"",null);
return res;
}
here is the method id Plying_Window Class that is calling insertCoins method of Database_Helper
public void insertCoins( ){
Database_Helper db=new Database_Helper ( this );
boolean isInserted=db.insertCoins( 5 );
if(isInserted){
Toast.makeText ( Playing_Window.this, getString( R.string.c_add),Toast.LENGTH_LONG ).show ();}
}
here is the Levels Class that is calling getData method of Database_Helper .
public class Levels extends AppCompatActivity {
static int Easy_lvl_counter=0,Medium_lvl_counter=0,Hard_lvl_counter=0;
public TextView display_coins;
int tot_coins =coin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_levels );
Actions ();get ();
set ();
}
void set(){
int c=get();
tot_coins=c;
display_coins.setText ( String.valueOf ( c ) );
}
Button btn_level1,btn_level2,btn_level3,btn_level4,btn_level5,btn_level6,btn_level7,btn_level8,btn_level9,btn_level10,btn_mainMenu;
public void Actions(){
display_coins=findViewById ( R.id.coins );
btn_level1= findViewById ( R.id.btn_level1 );
btn_level2=findViewById ( R.id.btn_level2 );
btn_level3=findViewById ( R.id.btn_level3 );
btn_level4=findViewById ( R.id.btn_level4 );
btn_level5=findViewById ( R.id.btn_level5 );
btn_level6=findViewById ( R.id.btn_level6 );
btn_level7=findViewById ( R.id.btn_level7 );
btn_level8=findViewById ( R.id.btn_level8 );
btn_level9=findViewById ( R.id.btn_level9 );
btn_level10=findViewById ( R.id.btn_level10 );
btn_mainMenu=findViewById ( R.id.btn_mainMenu );
btn_mainMenu.setOnClickListener ( new View.OnClickListener () {
@Override
public void onClick(View v) {
finish ();
Medium_lvl_counter=0;Easy_lvl_counter=0;Hard_lvl_counter=0;
}
} );
btn_level1.setOnClickListener ( new View.OnClickListener () {
@Override
public void onClick(View v) {
switch (Choice){
case 1:{Easy_lvl_counter = 1; Medium_lvl_counter=0;Hard_lvl_counter=0;
if(tot_coins>=0)startActivity ( new Intent ( getApplicationContext (),Playing_Window.class ) );break;}
case 2:{Medium_lvl_counter=1;Hard_lvl_counter=0;Easy_lvl_counter=0;
if(tot_coins>=50){startActivity ( new Intent ( getApplicationContext (),Playing_Window.class ) );}
else{Toast .makeText( Levels.this, R.string.txt_coins_short, Toast.LENGTH_SHORT).show();}break; }
case 3:{Hard_lvl_counter=1;Easy_lvl_counter = 0; Medium_lvl_counter=0;
if(tot_coins>=100)startActivity ( new Intent ( getApplicationContext (),Playing_Window.class ) );
else{Toast .makeText( Levels.this,R.string.txt_coins_short, Toast.LENGTH_SHORT).show();}break; }
}
}
} );............}
public int get(){
Database_Helper dbHelper=new Database_Helper (Levels.this);
Cursor cursor=dbHelper.getData ();
if(cursor.getCount ()==0){return 0;}
else{
while(cursor.moveToNext ()){
String db_coins=cursor.getString ( 0);
if(coin ==-1)coin=0;
else coin=Integer.valueOf ( db_coins );
}
}
return coin;
}
static int coin=0;
}
here is the playingWindow class
public class Playing_Window extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate ( savedInstanceState );
setContentView ( R.layout.activity_playing__window );
Actions ();
}
Levels obj_lev;
boolean timer_Count=false;
private EditText box1, box2 , box3, box4, box5, box6, box7, box8, box9, box10, box11, box12, box13, box14, box15, box16, box17, box18, box19 , box20, box21, box22, box23, box24, box25;
private AlertDialog.Builder builder;AlertDialog alertdialog;
private CountDownTimer timer;
void Actions() {
obj_lev=new Levels ();
builder = new AlertDialog.Builder(Playing_Window.this);
.
.
.
.
void dialogShow(){
builder.setMessage ( getString( R.string.con_Text) );
builder.setPositiveButton( R.string.txt_ok, new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
Levels obj=new Levels ();obj.get ();
finish ();
}
});
alertdialog=builder.create();
alertdialog.show();
}
void dialogShowIncomplete(){
builder.setMessage ( "Fill all the Boxes Correctly ! " );
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
alertdialog=builder.create();
alertdialog.show();
}
.
.
.
public void insertCoins( ){
Database_Helper db=new Database_Helper ( this );
boolean isInserted=db.insertCoins( 5 );
if(isInserted){
Toast.makeText ( Playing_Window.this, getString(
R.string.c_add),Toast.LENGTH_LONG ).show ();}
}
}
Here is the Stack Trace for My Exception . Thanks for Your Time
Process: com.sudoku.jamshaid.sudoku, PID: 23032
java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:267)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223)
at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187)
at com.sudoku.jamshaid.sudoku.Database_Helper.getData(Database_Helper.java:45)
at com.sudoku.jamshaid.sudoku.Levels.get(Levels.java:241)
at com.sudoku.jamshaid.sudoku.Playing_Window$3.onClick(Playing_Window.java:2555)
at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:162)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
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:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)