Я пытаюсь получить данные книги из своей базы данных, но я продолжаю работать в NullPointerException. У меня есть двойной массив Записи, которые я хочу заполнить с помощью элемента книги и его 5 соответствующих деталей. Я знаю, что у меня есть дополнительные элементы в массиве InventoryAdapter, которые я не использую в этом методе, но я держу его там, так как я использую его в другом месте.Android Null Pointer Exception SQLite
Ошибка возникает при Entries[i][0] = InventoryAdapter.getInventoryByISBN(records[i][0])[1];
и выдвижением на Cursor cursor = db.rawQuery(query, new String[] {ISBN});
Почему бы ошибка в Cursor? Я бы подумал, что ошибка, вероятно, произойдет с вызовом местоположения массива, которого не существует.
Главный код
int numEntries = 2;
Entries = new String[numEntries][5];
int totalCount = 0;
if (BuildConfig.DEBUG)
Log.d(debug.LOG, "numEntries="+numEntries);
Toast.makeText(ReportsByDateScreen.this, "numEntries="+numEntries, Toast.LENGTH_LONG).show();
// Set up search array
for(int i = 0; i < numEntries; i++)
{
Entries[i][0] = InventoryAdapter.getInventoryByISBN(records[i][0])[1];
Entries[i][1] = InventoryAdapter.getInventoryByISBN(records[i][0])[2];
Entries[i][2] = InventoryAdapter.getInventoryByISBN(records[i][0])[4];
Entries[i][3] = InventoryAdapter.getInventoryByISBN(records[i][0])[3];
for(int j = 0; j < records.length; j++)
{
if(records[j][0].equals(InventoryAdapter.getInventoryByISBN(records[i][0])[0]))
{
totalCount+=Integer.parseInt(InventoryAdapter.getInventoryByISBN(records[i][0])[8]);
}
}
Entries[i][4] = ((Integer)totalCount).toString();
reportArray.add(new ReportsItem(records[i][0],Entries[i]));
totalCount = 0;
}
InventoryAdapter
public static String[] getInventoryByISBN(String ISBN)
{
String[] entry = new String[9];
//Query
String query = "select * from INVENTORY where ISBN = ?";
Cursor cursor = db.rawQuery(query, new String[] {ISBN});
if(cursor.getCount()<1) // title Not Exist
{
cursor.close();
for(int i = 0; i < 9; i++)
entry[i] = "Not Found";
return entry;
}
cursor.moveToFirst();
//put data into respective variable
int publish = cursor.getInt(cursor.getColumnIndex("PUBLISH_DATE"));
String publishdate = ((Integer)publish).toString();
String title = cursor.getString(cursor.getColumnIndex("TITLE"));
String author = cursor.getString(cursor.getColumnIndex("AUTHOR"));
String callNumber = cursor.getString(cursor.getColumnIndex("CALL_NUMBER"));
int available = cursor.getInt(cursor.getColumnIndex("AVAILABLE_COUNT"));
String availablecount = ((Integer)available).toString();
int inventory = cursor.getInt(cursor.getColumnIndex("INVENTORY_COUNT"));
String inventorycount = ((Integer)inventory).toString();
int due = cursor.getInt(cursor.getColumnIndex("DUE_PERIOD"));
String dueperiod = ((Integer)due).toString();
int checkoutcount = cursor.getInt(cursor.getColumnIndex("COUNT"));
String count = ((Integer)checkoutcount).toString();
//combine variables into one array
entry[0] = ISBN;
entry[1] = title;
entry[2] = author;
entry[3] = publishdate;
entry[4] = callNumber;
entry[5] = availablecount;
entry[6] = inventorycount;
entry[7] = dueperiod;
entry[8] = count;
cursor.close();
return entry;
}