2017-04-27 29 views
10

sao chép DB từ tài sản bằng mã này:Làm thế nào để kết nối với mật khẩu bảo vệ SQLite DB với 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(); 
      } 
    } 
    } 

để có được Đạo tôi sử dụng này:

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

Nhưng làm thế nào để có được Đạo nếu DB của tôi sẽ được Mật khẩu bảo vệ?

Trả lời

4

Bạn phải sử dụng SQLCipher với OrmLite, tôi sẽ đề nghị ormlite-sqlcipher thư viện để bạn

2

OrmLiteSqliteOpenHelper có một constructor mà phải mất một mật khẩu để thay đổi bạn siêu cuộc gọi đến

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

tôi sẽ có cuộc gọi đến copyFromAssets (context) ra khỏi hàm tạo DatabaseHelper và gọi nó trước khi DatabaseHelper được tạo ra tức là điều đầu tiên khi ứng dụng khởi động

+0

Nó không có hàm tạo này 'super (context, DATABASE_NAME, nul l, DATABASE_VERSION, (File) null, "DB password go here"); ' – NickUnuchek

+0

Sau đó, bạn không sử dụng omrlite-sqlcipher, xem câu trả lời trước –

Các vấn đề liên quan