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 obtener ArrayIndex fuera de límites Excepción al agregar nuevos elementos a la lista mientras se desplaza
  • Cómo eliminar tablas y bases de datos con Sqiltehelper en android
  • Android: la columna '_id' no existe
  • ¿Consulta para obtener registros basados ​​en Radius en SQLite?
  • SQlite Database: No se puede encontrar el contexto
  • Cómo convertir milisegundos a la fecha en SQLite
  • Android SqliteAssetHelper - fusionar las tablas de la base de datos del activo con el existente
  • ¿Puedo bloquear una tabla SQLite para el subproceso actual?
  • Tabla de puntuaciones altas
  • Acerca de la seguridad de Sqlite en android en caso de varios procesos
  • Cómo agregar la clave principal al tipo de datos de texto en android sqlite?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.