Android NullPointerException al ejecutar la consulta en la base de datos SQLite

Estoy tratando de leer datos de una base de datos que he creado, pero siempre obtengo una NullPointerException al intentar recuperar todos mis registros.

Prácticamente copypasted el código de otra aplicación que tengo funcionando perfectamente, pero de alguna manera estoy haciendo mal aquí.

El NullPointerException está en la línea de

return mDb.query(DATABASE_TABLE_LOCALLOGIN, new String[] {LOCALLOGIN_ID, LOCALLOGIN_LOGIN, LOCALLOGIN_PASSWORD}, null, null, null, null, null); 

Aquí está el código relevante (no importa los arrays de cadenas, su para agregar tablas más adelante: GoingOutDbAdapter.java

 public class GoingOutDbAdapter { private static final String DATABASE_NAME = "GoingOutData"; private static final String DATABASE_TABLE_LOCALLOGIN = "LocalLogin"; public static final String LOCALLOGIN_ID = "LocalLogin_id"; public static final String LOCALLOGIN_LOGIN = "Login"; public static final String LOCALLOGIN_PASSWORD = "Password"; private static final String TAG = "Debugstring"; private DatabaseHelper mDbHelper; private SQLiteDatabase mDb; private static final String[] DATABASE_CREATE = { "CREATE Table " + DATABASE_TABLE_LOCALLOGIN + " ( " + LOCALLOGIN_ID + " integer PRIMARY KEY Autoincrement, " + LOCALLOGIN_LOGIN + " text NOT NULL, " + LOCALLOGIN_PASSWORD + " text NOT NULL );"}; private final Context mCtx; private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { for(int i = 0; i < DATABASE_CREATE.length; i++){ Log.d(TAG,DATABASE_CREATE[i]); db.execSQL(DATABASE_CREATE[i]); } } } public GoingOutDbAdapter(Context ctx) { this.mCtx = ctx; } public GoingOutDbAdapter open() throws SQLException { mDbHelper = new DatabaseHelper(mCtx); mDb = mDbHelper.getWritableDatabase(); return this; } public void close() { mDbHelper.close(); } public Cursor fetchAllLocalLogins() { return mDb.query(DATABASE_TABLE_LOCALLOGIN, new String[] {LOCALLOGIN_ID, LOCALLOGIN_LOGIN, LOCALLOGIN_PASSWORD}, null, null, null, null, null); } } 

MyActivity.java, donde llamo a fetchAllLocalLogins

 public class MyActivity extends Activity { /** Called when the activity is first created. */ private GoingOutDbAdapter mDbHelper; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mDbHelper = new GoingOutDbAdapter(this); setContentView(R.layout.main); Cursor localLogin = mDbHelper.fetchAllLocalLogins(); } } 

Es probable que desee llamar al método open() antes de realizar la consulta:

 //... mDbHelper.open(); //whitout this call mdb will be NULL Cursor localLogin = mDbHelper.fetchAllLocalLogins(); 

Debe abrir la base de datos antes de realizar la operación de base de datos. MDbHelper.open ();

  • Ejecución de varias sentencias con SQLiteDatabase.execSQL
  • ¿Cómo acceder a Android a una base de datos sqlite incluida en la carpeta de activos?
  • Actualizar consulta sqlite - Android
  • ¿Cómo puedo hacer un contexto de base de datos SQLite nulo en OnDestroy () en Android?
  • Base de datos SQLite de Android: inserción lenta
  • Error al azar de SQLiteConnectionPool en Android. ¿Como evitar?
  • Problema en sqlite con "como" en android
  • Base de datos SQLite en tarjeta SD
  • No se pudo recuperar datos de la base de datos a listview.
  • Android Jelly bean base de datos está bloqueado (código 5)
  • ¿Es posible obtener la última fecha de modificación de un archivo de activos?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.