【发布时间】:2014-01-14 21:04:12
【问题描述】:
我尝试使用 SQLCipher 加密/解密我的数据库。它似乎有效,但我想确定我做对了。 这是我的代码:
public class MainActivity extends Activity {
private DataBaseCategory dbc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//this.deleteDatabase("category");
dbc = new DataBaseCate gory(this);
try {
dbc.openToWriting();
dbc.createCategory("TEST4");
dbc.close();
}
catch(Throwable ex) {
Log.e("ABC","abc",ex);
}
dbc.openToReading();
List<Category> list = dbc.getAllCategories();
System.out.println("Size : "+list.size());
dbc.close();
}
public class DataBaseCategory {
private SQLiteDatabase database;
private Context context;
private DataBaseCategoryHelper dbCHelper;
private String password = "password";
private String[] allColumns = { DataBaseCategoryHelper.COLUMN_ID,
DataBaseCategoryHelper.COLUMN_CATEGORY_NAME };
public DataBaseCategory(Context context) {
this.context = context;
SQLiteDatabase.loadLibs(context);
dbCHelper = new DataBaseCategoryHelper(this.context);
}
public void openToWriting() throws SQLException{
database = dbCHelper.getWritableDatabase(password);
}
public void openToReading() throws SQLException {
database = dbCHelper.getReadableDatabase(password);
}
public void close() {
dbCHelper.close();
}
/**
* Not important part of code
*/
}
public class DataBaseCategoryHelper extends SQLiteOpenHelper{
public static final String TABLE_COMMENTS = "category";
public static final String COLUMN_ID = "id";
public static final String COLUMN_CATEGORY_NAME = "category_name";
private static final String DATABASE_NAME = "category";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE = "create table "
+ TABLE_COMMENTS + "(" + COLUMN_ID
+ " integer primary key autoincrement, " + COLUMN_CATEGORY_NAME
+ " text not null);";
public DataBaseCategoryHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database) {
try {
database.execSQL(DATABASE_CREATE);
}
catch(Exception ex ) {
Log.e("ErroeDBC ",ex.toString());
}
}
这真的是我加密/解密数据库所需的全部内容吗? 我错过了什么吗?
【问题讨论】:
-
你为什么不检查一下数据库文件是否被加密?
-
好主意:)。我尝试了另一个密码,失败了,所以它的工作。Thx