2016-02-11 5 views
0

У меня возникли проблемы с сканером и курсорами Zxing android, возвращающими результаты из моей базы данных.Android Zxing Scanner and Cursor

Что бы я хотел, сканер вернет результат сканирования, эта строка будет использоваться в запросе в базе данных, а результаты возвращаются в курсор, который будет использоваться для вставки в другую таблицу.

Ошибка, которую я получаю, является ошибкой нулевой точки, я знаю, что такое ошибка нулевого указателя, но я изо всех сил пытаюсь найти, где я ошибся в коде.

Запрос

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

Он инициализируется в верхней части моего класса базы данных с 'private 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

Смежные вопросы