unir una ser obb instalar entrar datos data como carpeta archivos aplicaciĆ³n acceder abrir android sqlite3 android-sqlite sqlite

una - copiar el archivo de la base de datos/assets a/data/data folder en el explorador de archivos-Android



como unir datos obb y apk (1)

Tengo problemas para copiar el archivo de la base de datos / assets a / data / data folder en el explorador de archivos. He buscado en este sitio web, he encontrado muchas respuestas, pero no he podido encontrar la respuesta adecuada que se adapte a mi contexto. Creé la base de datos externamente con SQLite Manager y la importé en la carpeta de activos. Ahora, cuando ejecuto mi aplicación, obtengo NullPointerException en el emulador. Descubrí que el paquete no se ha creado en la carpeta / data / data en absoluto. Pero la aplicación se está iniciando en el emulador. El depurador tampoco mostró ningún error.

He intentado las siguientes soluciones:

Reinició eclipse y emulador, eliminó y recreó el emulador existente, finalmente reinició la computadora portátil

Ninguna de las soluciones resolvió mi problema. ¿Puede alguien decirme, cuál es mi error?

Aquí está mi MainActivity.java: -

public class MainActivity extends Activity implements OnClickListener { Dialog d; private photoDbAdapters mDbAdapter; public int currentimageindex=0; String[] sp; int p=1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); images(); } public void images() { try{ String rt=mDbAdapter.fetchsingles(); //the application is getting crashed in this part int id = getResources().getIdentifier(rt, null, null); ImageView iv = (ImageView) findViewById(R.id.ImageView3_Left); iv.setImageResource(id); }catch(NullPointerException er) { String ht=er.toString(); Toast.makeText(getApplicationContext(), ht, Toast.LENGTH_LONG).show (); }} @Override public void onClick(View v) { finish(); android.os.Process.killProcess(android.os.Process.myPid()); // TODO Auto-generated method stub }

método fetchsingles: - (este método recuperará el nombre del archivo de imagen de la base de datos)

public String fetchsingles() { try{ img = mDbHelper.getData(); }catch(Exception e) { String error= e.toString(); Dialog d = new Dialog(null); d.setTitle("image cannot be fetched"); int err=Integer.parseInt(error); d.setContentView(err); d.show(); } return img; }

método getdata: -

public String getData() { // TODO Auto-generated method stub String dry="SELECT "+COL_DATA+" FROM Photos WHERE "+COL_ID+"=2;"; Cursor c = myDataBase.rawQuery(dry,null); String result = ""; int img = c.getColumnIndex(COL_DATA); result = c.getString(img); return dry;

El código puede parecer largo, no importa nada y ayúdame a resolver este problema.

Gracias por adelantado.


Intente usar el código siguiente para copiar la base de datos de los activos al directorio de datos / datos / paquetes

package com.example.myapp; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DataBaseHelper1 extends SQLiteOpenHelper{ private static String DB_PATH = "/data/data/com.example.myapp/databases/"; private static String DB_NAME = "myDB.sqlite"; private SQLiteDatabase myDataBase; private final Context myContext; public DataBaseHelper1(Context context) { super(context, DB_NAME, null, 1); this.myContext = context; } public void createDataBase() throws IOException{ boolean dbExist = checkDataBase(); if(dbExist) { Log.i("DB....", "database available...."); } else { this.getWritableDatabase(); try { copyDataBase(); } catch (IOException e) { throw new Error("Error copying database"); } Log.i("DB..", "database created....."); } } public boolean checkDataBase(){ SQLiteDatabase checkDB = null; try{ String myPath = DB_PATH + DB_NAME; checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); }catch(SQLiteException e){ Log.e("CheckDb","DB not found"); //database does''t exist yet. if(checkDB != null){ checkDB.close(); } } finally { if(checkDB != null){ checkDB.close(); } this.close(); } return checkDB != null ? true : false; } private void copyDataBase() throws IOException{ InputStream myInput = myContext.getAssets().open(DB_NAME); String outFileName = DB_PATH + DB_NAME; OutputStream myOutput = new FileOutputStream(outFileName); byte[] buffer = new byte[1024]; int length; while ((length = myInput.read(buffer))>0){ myOutput.write(buffer, 0, length); } myOutput.flush(); myOutput.close(); myInput.close(); } public SQLiteDatabase openDataBase() throws SQLException{ String myPath = DB_PATH + DB_NAME; return myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); } @Override public synchronized void close() { if(myDataBase != null) myDataBase.close(); super.close(); } @Override public void onCreate(SQLiteDatabase db) { } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } public void getData() { SQLiteDatabase myDB ; Cursor cursor ; try { myDB=this.openDataBase(); cursor=myDB.rawQuery("SELECT * FROM Country_Master",null); if (cursor != null ) { if (cursor.moveToFirst()) { do { // put your code to get data from cursor }while (cursor.moveToNext()); } } if(cursor != null) { myDB.close(); cursor.close(); } }catch(SQLException sqle){ throw sqle; } } }

Ponga también este código en el método Crear en su actividad donde quiera copiar la base de datos.

DataBaseHelper1 myDbHelper = new DataBaseHelper1(MyActivity.this); try { myDbHelper.createDataBase(); }catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { myDbHelper.close(); }