如何将SQLcipher添加到android项目?

如何将SQLcipher添加到android项目?,android,database,sqlite,sqlcipher,Android,Database,Sqlite,Sqlcipher,我试图使用SQLCipher为我的项目加密我的数据库。我添加了使用SQLCipher所需的所有资产和LIB,但问题是我有一个专门用于数据库操作的整个类,所以我对我应该在何处添加所需代码有点困惑。我确实尝试在我的数据库open()方法中初始化上述库,但这只是给了我一个没有这样的表例外 这是我修改前的代码。任何帮助都将被感激地接受 public class DataBaseHandler { public static final String KEY_ID = "id"; public stati

我试图使用SQLCipher为我的项目加密我的数据库。我添加了使用SQLCipher所需的所有资产和LIB,但问题是我有一个专门用于数据库操作的整个类,所以我对我应该在何处添加所需代码有点困惑。我确实尝试在我的数据库
open()
方法中初始化上述库,但这只是给了我一个没有这样的表例外

这是我修改前的代码。任何帮助都将被感激地接受

public class DataBaseHandler {
public static final String KEY_ID = "id";
public static final String KEY_XCOD = "xcod";
public static final String KEY_YCOD = "ycod";
public static final String KEY_IMG = "img";
public static final String KEY_PATTERN = "pattern";
public static final String KEY_PACKAGENAME = "packagename";
private static final String DATABASE_NAME = "P3UserDb";
private static final String DATABASE_USERTABLE = "LoginDetailsTable";
private static final String DATABASE_PATTERNTABLE = "PatternDetailsTable";
private static final String DATABASE_LOCKEDAPPSTABLE = "LockedAppsTable";
private static final int DATABASE_VERSION = 1;

private DbHelper ourHelper;
private final Context ourContext;
private SQLiteDatabase ourDatabase;

public static class DbHelper extends SQLiteOpenHelper {

    public DbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL("CREATE TABLE " + DATABASE_USERTABLE + " (" + KEY_ID
                + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_XCOD
                + " INTEGER NOT NULL, " + KEY_YCOD + " INTEGER NOT NULL, "
                + KEY_IMG + " TEXT NOT NULL);");
        db.execSQL("CREATE TABLE " + DATABASE_PATTERNTABLE + " ("
                + KEY_PATTERN + " STRING NOT NULL);");
        db.execSQL("CREATE TABLE " + DATABASE_LOCKEDAPPSTABLE + " ("
                + KEY_PACKAGENAME + " STRING);");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS " + DATABASE_USERTABLE);
        db.execSQL("DROP TABLE IF EXISTS " + DATABASE_PATTERNTABLE);
        db.execSQL("DROP TABLE IF EXISTS " + DATABASE_LOCKEDAPPSTABLE);
        onCreate(db);
    }
}

public DataBaseHandler(Context c) {
    ourContext = c;
}

public DataBaseHandler open() throws SQLException {
    ourHelper = new DbHelper(ourContext);
    ourDatabase = ourHelper.getWritableDatabase();
    return this;
}

public void close() {
    ourHelper.close();
}
.
.
.
Other Database operations
.
.
.
}

在初始化
SQLiteOpenHelper
子类之前,需要调用
SQLiteDatabase.loadLibs(…)向其传递上下文。这将正确地允许加载本机库。

检查这一点,为什么不遵循SQLCypher的教程呢。发布你的“之前”代码似乎相当懒惰。