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

  • Evite borrar los datos de la base de datos al hacer clic en el botón "borrar datos" en la configuración de la aplicación en el dispositivo Android
  • Sigue recibiendo NullPointerExceptions al intentar llamar a getWritableDatabase ()
  • Obtención de todos los registros de sqlite android
  • Base de datos local Unity SQLite
  • Crear la función definida por el usuario en sqlite android?
  • La base de datos no se eliminará cuando desinstale la aplicación de Android
  • Necesidad de mostrar una consulta SQLite en orden descendente
  • Cómo evitar objetos duplicados en la base de datos DB4o
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.