2017-04-27 3 views
10

Ich kopiere DB von Vermögenswerten durch diesen Code:Wie verbinde ich mich mit Passwortgeschützter SQLite DB mit 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(); 
      } 
    } 
    } 

Dao zu bekommen Ich benutze diese:

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

Aber wie Dao zu bekommen, wenn mein DB wird Passwort geschützt werden?

Antwort

2

OrmLiteSqliteOpenHelper einen Konstruktor hat vorschlagen, die so ein Passwort gelangen Sie zum Super Anruf ändern

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

Ich würde den Anruf entgegennehmen zu copyFromAssets (context) aus dem DatabaseHelper -Konstruktor heraus und ruft es auf, bevor DatabaseHelper erstellt wird, dh zuerst beim Start der App

+0

Es hat nicht diesen Konstruktor 'super (context, DATABASE_NAME, nul l, DATABASE_VERSION, (Datei) null, "DB password goes here"); ' – NickUnuchek

+0

Ah, dann verwendest du nicht omrlite-sqlcipher, siehe vorherige Antwort –

Verwandte Themen