0

我试图从表中检索一些数据使用光标显示它在TextView中,但我得到一个错误。NullPointerException异常使用光标检索数据

请小心帮助我。
这里是我的代码

public class DisplayBudget extends AppCompatActivity implements View.OnClickListener { 
    SQLiteDatabase db; 
    TextView bname,name,limit; 
    Button del; 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.budget_details); 
    bname = (TextView) findViewById(R.id.textViewbname); 
    name = (TextView) findViewById(R.id.textViewname); 
    limit = (TextView) findViewById(R.id.textViewlimit); 
    del = (Button) findViewById(R.id.button2); 
    del.setOnClickListener(this); 
    DBController dbController = new DBController(this); 
    dbController.openToDisplay(); 
    Cursor cursor = db.rawQuery(" select *from "+DBHelper.TABLE_NAME+ " where id = 1 ",null); 
    cursor.moveToFirst(); 
    name.append(cursor.getString(cursor.getColumnIndex(DBHelper.OWNER_NAME))); 
    bname.append(cursor.getString(cursor.getColumnIndex(DBHelper.BUDGET_NAME))); 
    limit.append(cursor.getString(cursor.getColumnIndex(DBHelper.BUDGET_LIMIT))); 
    cursor.close(); 
} 

这里的logcat的* and from之间

12-25 00:39:46.440 30123-30123/com.example.rajkumar.budget W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xb0d40b20) 
12-25 00:39:46.440 30123-30123/com.example.rajkumar.budget E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.example.rajkumar.budget, PID: 3
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.rajkumar.budget/com.example.rajkumar.budget.DisplayBudget}: java.lang.NullPointerException 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
     at android.app.ActivityThread.access$800(ActivityThread.java:135) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5001) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
     at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
     at com.example.rajkumar.budget.DisplayBudget.onCreate(DisplayBudget.java:28) 
     at android.app.Activity.performCreate(Activity.java:5231) 

回答

1

采取空间,让您的查询的样子,

Cursor cursor = db.rawQuery("select * from "+DBHelper.TABLE_NAME+ " where id = 1 ",null); 
+2

你有一个问题,我得到另一个问题。 –

2

您在

Cursor cursor = db.rawQuery(" select * from "+DBHelper.TABLE_NAME+ " where id = 1 ",null); 
NPE因为 db=null

你初始化的地方db?对于将来的问题,也请参考Nils Patel答案。

+0

@M D,是的,但它不会初始化。我试过.. – RaJ

+1

@RaJ你应该先学习[如何在Android中使用SQLite?](https://www.google.co.in/#q=sqliteopenhelper+in+android) –

+0

是的..谢谢反正 – RaJ

0

你只需要改变的是你还是你不能得到错误: - “从表名其中id =选择*” + ID

字符串dataquery =;

Cursor cursor = db.rawQuery(dataquery,null);

其有益

0

试试这个。

DBController dbController = new DBController(this); 
    SQLiteDatabase db = createDatabase.open(); 
Cursor cursor = db.rawQuery(" select * from "+DBHelper.TABLE_NAME+ " where id = 1 ",null); 
if(cursor.moveToFirst()){ 
name.append(cursor.getString(cursor.getColumnIndex(DBHelper.OWNER_NAME))); 
    bname.append(cursor.getString(cursor.getColumnIndex(DBHelper.BUDGET_NAME))); 
    limit.append(cursor.getString(cursor.getColumnIndex(DBHelper.BUDGET_LIMIT)));  } 
+0

你必须在*和from之间放置空格。正如我上面提到的。 – Nils

+0

是的,谢谢@Nils Patel –

+0

你总是欢迎兄弟.. !! – Nils

相关问题