2017-04-27 57 views
10

skopiować DB z aktywów przez ten kod:Jak połączyć się z zabezpieczonym hasłem SQLite DB za pomocą OrmLite?

public class DatabaseHelper extends OrmLiteSqliteOpenHelper { 
     private static final String DATABASE_NAME = "database.db"; 
     private static final String DATABASE_PATH = "/data/data/"+BuildConfig.APPLICATION_ID+"/databases/"; 

    public DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     copyFromAssets(context); 
    } 

     private void copyFromAssets(Context context) { 
     boolean dbexist = checkdatabase(); 
     if (!dbexist) { 
      File dir = new File(DATABASE_PATH); 
       dir.mkdirs(); 
       InputStream myinput = context.getAssets().open(DATABASE_NAME); 
       String outfilename = DATABASE_PATH + DATABASE_NAME; 
       Log.i(DatabaseHelper.class.getName(), "DB Path : " + outfilename); 
       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(); 
      } 
    } 
    } 

dostać Dao Używam tego:

public Dao<AnyItem, Integer> getDaoAnyItem() throws SQLException { 
     if (daoAnyItem == null) { 
      daoAnyItem = getDao(AnyItem.class); 
     } 
     return daoAnyItem; 
    } 

Ale jak dostać Dao jeśli mój DB będzie chroniony hasłem?

Odpowiedz

2

OrmLiteSqliteOpenHelper ma konstruktora, który trwa hasło tak zmienić Ci się Super wywołanie

super(context, DATABASE_NAME, null, DATABASE_VERSION, (File)null, "DB password goes here"); 

wziąłbym wywołanie copyFromAssets (context) z konstruktora DatabaseHelper i wywołaj go zanim DatabaseHelper zostanie utworzony, tzn. pierwsza rzecz, gdy uruchomi się aplikacja

+0

Nie ma tego super konstruktora '(kontekst, DATABASE_NAME, nul l, DATABASE_VERSION, (File) null, "Hasło DB idzie tutaj"); ' – NickUnuchek

+0

Ah wtedy nie używasz omrlite-sqlcipher, zobacz poprzednią odpowiedź –