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

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

  • Android: utiliza UUID como clave principal en SQLite
  • ¿Cómo medir el tamaño de los datos de las aplicaciones de Android e identificar las fugas de almacenamiento?
  • ¿Cómo crearía una nueva actividad donde tendría la opción de agregar nuevos elementos de la base de datos?
  • Acceso a la base de datos SQLite desde la línea de comandos
  • Almacenamiento de números de coma flotante en la base de datos android
  • Actualizar Recyclerview de otra actividad
  • Compartir y persistir datos entre varias aplicaciones de Android
  • Obtener nueva fila agregada en la tabla SQLite
  • Cómo almacenar datos en la base de datos sqlite con jQuery-mobile dreamviewer cc con phonegap en android?
  • Sqlite no pudo leer row 0 col -1 de cursorwindow de cursor en servicio de alarma
  • ¿Cómo se comprueba si existe una tabla en una base de datos SQLite de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.