SQlite Database: No se puede encontrar el contexto

Aparentemente hay algún problema con el contexto y en la línea siguiente como estoy obteniendo una NullPointerException . Creo que algo está mal con el contexto. También cuando estoy tratando de abrir y cerrar la base de datos de dos actividades está lanzando CannotOpenORCloseDatabase Error. Por favor, ayuda.

 DBHelper dbHelper = new DBHelper(this.getApplicationContext()); 

¿Alguna idea de por qué? O sería genial si alguien pudiera sugerir una solución.

 public static final String EXT_CATEGORY = "category"; public static final String EXT_URL = "url"; private String tableName = DBHelper.tableName; private SQLiteDatabase MyDb; private int category; Cursor c = null; public static final String EXT_POS = "position"; private String url; private int position; WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { Log.v(LOG_TAG, "onCreate() called"); super.onCreate(savedInstanceState); openAndQueryDatabase(); } private void openAndQueryDatabase() { position = 1; category = 0; Log.v(LOG_TAG, "onCreate() called 3"); try { DBHelper dbHelper = DBHelper.getInstance(getBaseContext()); MyDb = dbHelper.getWritableDatabase(); c = MyDb.rawQuery("SELECT * FROM " + tableName + " where Category =" + category + "AND Position =" + position, null); Log.v(LOG_TAG, "onCreate() called 4"); // url = c.getString(c.getColumnIndex("Image")); url = "www.google.com"; Log.v(url, " URL in Recipe "); } catch (SQLiteException se) { Log.e(getClass().getSimpleName(), "Could not create or Open the database"); } 

Debe declarar su DBHelper como una instancia estática (singleton) para asegurarse de que sólo existe un DBHelper en un momento dado.

  public class DBHelper extends SQLiteOpenHelper { private static DBHelper mInstance = null; public static DBHelper getInstance(Context activityContext) { // Get the application context from the activityContext to prevent leak if (mInstance == null) { mInstance = new DBHelper (activityContext.getApplicationContext()); } return mInstance; } /** * Private, use the static method "DBHelper.getInstance(Context)" instead. */ private DBHelper (Context applicationContext) { super(applicationContext, DATABASE_NAME, null, DATABASE_VERSION); } } 

Para abrir el uso de SQLiteDatabase:

 SQLiteDatabase mDataBase = DBHelper.getInstance(context).getWritableDatabase(); 

Y cerrarlo

 mDataBase.close(); 

Use constructor for this … Mientras llamaba al contexto de paso de la clase DB como parámetro. como abajo.

  public class MyDB { private Context context; private DatabaseHelper DBHelper; private SQLiteDatabase db; public MyDB(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); } } 

Espero que esto te ayudará.

Estás utilizando, DBHelper dbHelper = new DBHelper(this.getApplicationContext());

En su lugar, debe utilizar,

 DBHelper dbHelper = new DBHelper(getApplicationContext()); 

Editar-

Intenta usar

 MyDb = getApplicationContext().getWritableDatabase(); 

en lugar de

 DBHelper dbHelper = new DBHelper(this.getApplicationContext()); MyDb = dbHelper.getWritableDatabase(); 

También intenta quitar el bloque finally() como sugiere esta respuesta .

Prueba esto

 db = new DbHelper(this.getContext()); 

Deberia de funcionar.

  • ¿La implementación de SQLite de Android desinfecta la entrada a través del método SQLiteDatabase.insert ()?
  • Limitación de una consulta SQLite en android
  • Androide. ActiveJDBC es posible?
  • Sqlite Browser no responde mientras inserta datos en sqlite
  • WebView hace que SQLiteDiskIOException
  • Android SQLite select * de la tabla donde nombre como% key% usando instrucciones preparadas
  • Android: ¿Cómo acceder a una sola base de datos de múltiples actividades en la aplicación?
  • Android - Almacenamiento de datos confidenciales en la base de datos sqlite
  • Cómo realizar operaciones de base de datos mediante Async Task
  • El tacto de la firma de la lona crea la edición en teléfono
  • Rendimiento ORM: ¿es greenDAO más rápido que ORMLite?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.