Note that there are some explanatory texts on larger screens.

plurals
  1. PODatabase | if (c.moveToFirst()) | NPE
    primarykey
    data
    text
    <p>So I've gotten around to making a database and when I'm trying to getAllRecords, the app throws a null pointer.</p> <pre><code>DBAdapter db = new DBAdapter(this); </code></pre> <p>-</p> <pre><code>db.open(); Cursor c = db.getAllRecords(); if (c.moveToFirst()) //&lt;--- NPE { do { DisplayRecord(c); } while (c.moveToNext()); } db.close(); </code></pre> <p>I can't figure out why it's doing this. My insert statement is:</p> <pre><code>db.open(); long id = db.insertRecord("Peanuts"); id = db.insertRecord("Coconuts"); id = db.insertRecord("Almonds"); db.close(); </code></pre> <p>I don't understand why this is returning null</p> <p><strong>Edit:</strong> Entire Database code per request</p> <pre><code>import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DBAdapter { public static final String KEY_ROWID = "id"; public static final String KEY_ITEM = "item"; private static final String TAG = "DBAdapter"; private static final String DATABASE_NAME = "InventoryDB"; private static final String DATABASE_TABLE = "inventory"; private static final int DATABASE_VERSION = 1; private static final String DATABASE_CREATE = "create table if not exists inventory (id integer primary key autoincrement, " + "item VARCHAR not null);"; private final Context context; private DatabaseHelper DBHelper; private SQLiteDatabase db; public DBAdapter(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); } private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { try { db.execSQL(DATABASE_CREATE); } catch (SQLException e) { e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS inventory"); onCreate(db); } } //---opens the database--- public DBAdapter open() throws SQLException { db = DBHelper.getWritableDatabase(); return this; } //---closes the database--- public void close() { DBHelper.close(); } //---insert a record into the database--- public long insertRecord(String item) { ContentValues initialValues = new ContentValues(); initialValues.put(KEY_ITEM, item); return db.insert(DATABASE_TABLE, null, initialValues); } //---deletes a particular record--- public boolean deleteContact(long rowId) { return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) &gt; 0; } //---retrieves all the records--- public Cursor getAllRecords() { return db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_ITEM}, null, null, null, null, null, null); } //---retrieves a particular record--- public Cursor getRecord(long rowId) throws SQLException { Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID, KEY_ITEM}, KEY_ROWID + "=" + rowId, null, null, null, null, null); if (mCursor != null) { mCursor.moveToFirst(); } return mCursor; } //---updates a record--- public boolean updateRecord(long rowId, String item) { ContentValues args = new ContentValues(); args.put(KEY_ITEM, item); return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) &gt; 0; } </code></pre> <p>}</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload