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

相關問題