2016-02-11 32 views
0

我有Zxing android掃描儀和遊標從我的數據庫返回結果的一些問題。Android Zxing掃描儀和光標

我想要發生的是掃描程序將從掃描中返回結果,然後將該字符串用於數據庫中的查詢中,並將結果返回到將用於插入另一個表中的遊標中。

我得到的錯誤是一個空點錯誤,我知道什麼是空指針錯誤,但我正努力尋找我在代碼中出錯的地方。

查詢

public Cursor getBarcodeInfo(String number){ 
    return db.rawQuery("select _id, barcode_item_name, barcode_measurement, barcode_unit from barcode where barcode_number = " + number, null); 
} 

光標

   String barcode_number = intent.getStringExtra("SCAN_RESULT"); 

      //Code to add scanned item to DB, needs barcode data before can be ruin 
      final Cursor barInformation = adapter.getBarcodeInfo(barcode_number); 

      barInformation.moveToFirst(); 
      String itemName = barInformation.getString(barInformation.getColumnIndex("barcode_item_name")); 

      Toast toast = Toast.makeText(this, "Content:" + itemName ,Toast.LENGTH_SHORT); 
      toast.show(); 

錯誤

02-11 20:28:07.966 18691-18691/com.example.rory.prototypev2 E/AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.Cursor android.database.sqlite.SQLiteDatabase.rawQuery(java.lang.String, java.lang.String[])' on a null object reference 
02-11 20:28:07.966 18691-18691/com.example.rory.prototypev2 E/AndroidRuntime:  at com.example.rory.prototypev2.DBMain.getBarcodeInfo(DBMain.java:437) 
02-11 20:28:07.966 18691-18691/com.example.rory.prototypev2 E/AndroidRuntime:  at com.example.rory.prototypev2.scanner.onActivityResult(scanner.java:73) 
+0

db在哪裏初始化?它的'null'當你調用'rawQuery' –

+0

它在我的數據庫類的頂部與'私人SQLITEDatabase DB是初始化;' – JJSmith

+0

這就是宣佈不進行初始化 –

回答

0

嘗試:

public Cursor getBarcodeInfo(String number){ 

    // Safe check to make sure db and number is not null 
    if(db == null || number == null){ 

     return null; 
    } 

    return db.rawQuery("select _id, barcode_item_name, barcode_measurement, barcode_unit from barcode where barcode_number = ?", new String[]{number}); 
} 
+0

這似乎已經修復它謝謝,只是指出,查詢實際上沒有返回任何東西,所以這是錯誤來自 – JJSmith