Android: SQLite usando base de datos incorrecta

Estoy utilizando varias bases de datos SQLite en mi proyecto android java. El primero (para un inicio de sesión) funciona bien, utilizando el código siguiente y estoy cerrando la conexión. Sin embargo, en la página siguiente estoy llamando a una función que utiliza una base de datos diferente, pero parece que sigue haciendo referencia a la primera base de datos y no la nueva. Estoy recibiendo este error:

09-14 13:18:01.990: I/SqliteDatabaseCpp(10035): sqlite returned: error code = 1, msg = no such table: NextID, db=/mnt/extSdCard/DirectEnquiries/AuditingData/Static/Users 

Que es correcto, NextID no está en Usuarios.

Aquí está el código para la página de inicio de sesión que utiliza la tabla Usuarios:

 if(String.valueOf(loginCount).equals("2")) { File dbfile = new File(Global.StaticDB + "/Users" ); SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null); Cursor c = db.rawQuery("SELECT UserID from Users where UserID like '" + txtUsername.getText().toString().trim() + "' AND Password like '" + txtPassword.getText().toString().trim() + "'", null); c.moveToFirst(); if(c.getCount() > 0) { Global.Username = c.getString(c.getColumnIndex("UserID")); Global.currentDB = spnLocation.getSelectedItem().toString(); Global.currentDBfull = Global.sctArea + Global.currentDB; db.close(); Context context = getApplicationContext(); CharSequence text = "Logged In"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context, text, duration); toast.show(); Intent ShowMainPage = new Intent(view.getContext(), MainPage.class); startActivityForResult(ShowMainPage, 0); } 

La página siguiente está usando esto:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_page); TextView txt = (TextView) findViewById(R.id.textView1); txt.setText(Global.Username); TextView dbtxt = (TextView) findViewById(R.id.txtDB); dbtxt.setText(Functions.getNextID("StationObjects")); } 

Y la función es:

 public static int getNextID(String tablename) { Log.e("Current DB is: ", Global.currentDBfull); File dbfile = new File(Global.currentDBfull); SQLiteDatabase dbF = SQLiteDatabase.openOrCreateDatabase(dbfile, null); int rtnID=(int)DatabaseUtils.longForQuery(dbF,"Select NxtNumber from NextID where NxtTable like '" + tablename + "'",null); rtnID += 1; //db.rawQuery("update NextID set NxtNumber = '" + rtnID + "' where NxtTable like 'StationObjects'", null); dbF.close(); return rtnID; } 

¿Cómo puedo asegurarme de que utiliza la segunda base de datos y no la primera? Tom

One Solution collect form web for “Android: SQLite usando base de datos incorrecta”

Puede intentar usar el siguiente formato para abrir y cerrar su base de datos:

 private static String DB_PATH = "/data/data/PACKAGE_NAME/databases/DATABASE_NAME.db"; private static SQLiteDatabase db; db = SQLiteDatabase.openDatabase(DB_PATH, null, SQLiteDatabase.OPEN_READONLY); // RUN YOUR QUERIES ETC db.close() 

Para el caso de 2 bases de datos usted necesitaría definir 2 DB_PATHs y referenciarlos donde pertinente.

Espero que esto ayude, L & L Partners

  • Cómo abrir / cerrar SQLite db en Android correctamente
  • Jest error de caso de prueba en reactivo nativo mediante el complemento externo
  • Android - SimpleCursorAdapter.ViewBinder - Establecer el color de fondo
  • ¿Qué diferencia hay entre SQLite y SQL?
  • ¿Es posible crear una base de datos SQLite en memoria desde un fragmento existente de memoria?
  • La mejor manera de trabajar con las fechas en Android SQLite
  • Establecer el valor predeterminado de una columna de enteros SQLite
  • Integración ormlite-4.9 con sqlcipher-2.08
  • SQLite FTS3 simular LIKE somestring%
  • Android: actualizar la versión de la base de datos y agregar nueva tabla
  • Orden de orden inversa de SQLiteQueryBuilder
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.