Searched a whole bunch of the same question and i couldn't get an idea why i get NPE. Pls help.
My code to read data from a table is,
private String []cols = {"name","id"};
public void seeRecord(String a, int b){
Cursor c = db.rawQuery("select * from vijay", null);
c.moveToFirst();
while(c.moveToNext()){
String nameintable = c.getString(c.getColumnIndex(cols[0]));
int idintable = c.getInt(c.getColumnIndex(cols[1]));
a=nameintable;
b=idintable;
}
c.close();
}
To insert data to the table is:
public void addRecord(String name, int id){
db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name",name);
values.put("id", id);
db.insert("vijay", null, values);
db.close();
}
logcat errors:
07-30 12:11:34.755: E/AndroidRuntime(15894): FATAL EXCEPTION: main
07-30 12:11:34.755: E/AndroidRuntime(15894): java.lang.IllegalStateException: Could not execute method of the activity
07-30 12:11:34.755: E/AndroidRuntime(15894): at android.view.View$1.onClick(View.java:2072)
07-30 12:11:34.755: E/AndroidRuntime(15894): at android.view.View.performClick(View.java:2408)
07-30 12:11:34.755: E/AndroidRuntime(15894): at android.view.View$PerformClick.run(View.java:8816)
07-30 12:11:34.755: E/AndroidRuntime(15894): at android.os.Handler.handleCallback(Handler.java:587)
07-30 12:11:34.755: E/AndroidRuntime(15894): at android.os.Handler.dispatchMessage(Handler.java:92)
07-30 12:11:34.755: E/AndroidRuntime(15894): at android.os.Looper.loop(Looper.java:123)
07-30 12:11:34.755: E/AndroidRuntime(15894): at android.app.ActivityThread.main(ActivityThread.java:4627)
07-30 12:11:34.755: E/AndroidRuntime(15894): at java.lang.reflect.Method.invokeNative(Native Method)
07-30 12:11:34.755: E/AndroidRuntime(15894): at java.lang.reflect.Method.invoke(Method.java:521)
07-30 12:11:34.755: E/AndroidRuntime(15894): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-30 12:11:34.755: E/AndroidRuntime(15894): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-30 12:11:34.755: E/AndroidRuntime(15894): at dalvik.system.NativeStart.main(Native Method)
07-30 12:11:34.755: E/AndroidRuntime(15894): Caused by: java.lang.reflect.InvocationTargetException
07-30 12:11:34.755: E/AndroidRuntime(15894): at com.example.databaseaccess.MainActivity.see(MainActivity.java:42)
07-30 12:11:34.755: E/AndroidRuntime(15894): at java.lang.reflect.Method.invokeNative(Native Method)
07-30 12:11:34.755: E/AndroidRuntime(15894): at java.lang.reflect.Method.invoke(Method.java:521)
07-30 12:11:34.755: E/AndroidRuntime(15894): at android.view.View$1.onClick(View.java:2067)
07-30 12:11:34.755: E/AndroidRuntime(15894): ... 11 more
07-30 12:11:34.755: E/AndroidRuntime(15894): Caused by: java.lang.NullPointerException
07-30 12:11:34.755: E/AndroidRuntime(15894): at com.example.databaseaccess.DbHelper.seeRecord(DbHelper.java:61)
07-30 12:11:34.755: E/AndroidRuntime(15894): ... 15 more
07-30 12:23:40.606: E/AndroidRuntime(18817): FATAL EXCEPTION: main
07-30 12:23:40.606: E/AndroidRuntime(18817): java.lang.IllegalStateException: Could not execute method of the activity
07-30 12:23:40.606: E/AndroidRuntime(18817): at android.view.View$1.onClick(View.java:2072)
07-30 12:23:40.606: E/AndroidRuntime(18817): at android.view.View.performClick(View.java:2408)
07-30 12:23:40.606: E/AndroidRuntime(18817): at android.view.View$PerformClick.run(View.java:8816)
07-30 12:23:40.606: E/AndroidRuntime(18817): at android.os.Handler.handleCallback(Handler.java:587)
07-30 12:23:40.606: E/AndroidRuntime(18817): at android.os.Handler.dispatchMessage(Handler.java:92)
07-30 12:23:40.606: E/AndroidRuntime(18817): at android.os.Looper.loop(Looper.java:123)
07-30 12:23:40.606: E/AndroidRuntime(18817): at android.app.ActivityThread.main(ActivityThread.java:4627)
07-30 12:23:40.606: E/AndroidRuntime(18817): at java.lang.reflect.Method.invokeNative(Native Method)
07-30 12:23:40.606: E/AndroidRuntime(18817): at java.lang.reflect.Method.invoke(Method.java:521)
07-30 12:23:40.606: E/AndroidRuntime(18817): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-30 12:23:40.606: E/AndroidRuntime(18817): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-30 12:23:40.606: E/AndroidRuntime(18817): at dalvik.system.NativeStart.main(Native Method)
07-30 12:23:40.606: E/AndroidRuntime(18817): Caused by: java.lang.reflect.InvocationTargetException
07-30 12:23:40.606: E/AndroidRuntime(18817): at com.example.databaseaccess.MainActivity.see(MainActivity.java:42)
07-30 12:23:40.606: E/AndroidRuntime(18817): at java.lang.reflect.Method.invokeNative(Native Method)
07-30 12:23:40.606: E/AndroidRuntime(18817): at java.lang.reflect.Method.invoke(Method.java:521)
07-30 12:23:40.606: E/AndroidRuntime(18817): at android.view.View$1.onClick(View.java:2067)
07-30 12:23:40.606: E/AndroidRuntime(18817): ... 11 more
07-30 12:23:40.606: E/AndroidRuntime(18817): Caused by: java.lang.NullPointerException
07-30 12:23:40.606: E/AndroidRuntime(18817): at com.example.databaseaccess.DbHelper.seeRecord(DbHelper.java:61)
07-30 12:23:40.606: E/AndroidRuntime(18817): ... 15 more
07-30 12:23:49.245: E/AndroidRuntime(18861): FATAL EXCEPTION: main
07-30 12:23:49.245: E/AndroidRuntime(18861): java.lang.IllegalStateException: Could not execute method of the activity
07-30 12:23:49.245: E/AndroidRuntime(18861): at android.view.View$1.onClick(View.java:2072)
07-30 12:23:49.245: E/AndroidRuntime(18861): at android.view.View.performClick(View.java:2408)
07-30 12:23:49.245: E/AndroidRuntime(18861): at android.view.View$PerformClick.run(View.java:8816)
07-30 12:23:49.245: E/AndroidRuntime(18861): at android.os.Handler.handleCallback(Handler.java:587)
07-30 12:23:49.245: E/AndroidRuntime(18861): at android.os.Handler.dispatchMessage(Handler.java:92)
07-30 12:23:49.245: E/AndroidRuntime(18861): at android.os.Looper.loop(Looper.java:123)
07-30 12:23:49.245: E/AndroidRuntime(18861): at android.app.ActivityThread.main(ActivityThread.java:4627)
07-30 12:23:49.245: E/AndroidRuntime(18861): at java.lang.reflect.Method.invokeNative(Native Method)
07-30 12:23:49.245: E/AndroidRuntime(18861): at java.lang.reflect.Method.invoke(Method.java:521)
07-30 12:23:49.245: E/AndroidRuntime(18861): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-30 12:23:49.245: E/AndroidRuntime(18861): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-30 12:23:49.245: E/AndroidRuntime(18861): at dalvik.system.NativeStart.main(Native Method)
07-30 12:23:49.245: E/AndroidRuntime(18861): Caused by: java.lang.reflect.InvocationTargetException
07-30 12:23:49.245: E/AndroidRuntime(18861): at com.example.databaseaccess.MainActivity.see(MainActivity.java:42)
07-30 12:23:49.245: E/AndroidRuntime(18861): at java.lang.reflect.Method.invokeNative(Native Method)
07-30 12:23:49.245: E/AndroidRuntime(18861): at java.lang.reflect.Method.invoke(Method.java:521)
07-30 12:23:49.245: E/AndroidRuntime(18861): at android.view.View$1.onClick(View.java:2067)
07-30 12:23:49.245: E/AndroidRuntime(18861): ... 11 more
07-30 12:23:49.245: E/AndroidRuntime(18861): Caused by: java.lang.IllegalStateException: database not open
07-30 12:23:49.245: E/AndroidRuntime(18861): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1333)
07-30 12:23:49.245: E/AndroidRuntime(18861): at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1315)
07-30 12:23:49.245: E/AndroidRuntime(18861): at com.example.databaseaccess.DbHelper.seeRecord(DbHelper.java:61)
07-30 12:23:49.245: E/AndroidRuntime(18861): ... 15 more
both are called in onclick event of a button. Inserting works properly. But when clicking read button, app crashes. Where is the mistake?
at com.example.databaseaccess.DbHelper.seeRecord(DbHelper.java:61)There is an object at line 61 which is null. Please find this line yourself and debug to see what object is nullmoveToNext()returns boolean value so It will never be null. I guess that C instance is null. Please check if you opened Database successful. In the case you have no records,c.moveToNext()just returns false.