我使用Eclipse + ADT创建了一个应用程序,可以读取和写入sqlite数据库,它在Android终端模拟器上工作正常,但是,从手机本身运行,它不会从db填充Spinners,意味着它没有在内部存储器中找到数据库,如果数据库在手机上,我已经用adb shell检查了它,所以我想我需要为应用程序授予root权限以允许它使用数据库, 我怎样才能做到这一点?我的手机是摩托罗拉Defy而且它的根源,感谢先进,祝你有个美好的一天。
编辑:这是我创建表的类,并添加onCreate和onUpdate方法:
public class passwordSQLiteHelper extends SQLiteOpenHelper{
String SqlCreate = "CREATE TABLE password(id INTEGER, name TEXT, password TEXT)";
public passwordSQLiteHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(SqlCreate);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS password");
db.execSQL(SqlCreate);
}
}
我在活动开始时从主班级调用它:
passwordSQLiteHelper passUserDb = new passwordSQLiteHelper(this, "/data/data/com.project.otto/databases/password", null, 1);
在终端上工作得很好,但是在手机上看起来似乎无法找到数据库,我用adb检查过它,请帮助我,谢谢!
答案 0 :(得分:0)
首先,我不会在构造函数中指定数据库的完整路径。只需文件名就可以了(因为Android会自动在你的应用程序私有数据区创建它)。
public PasswordDatabase(Context context {
super(context, "password.db", null, 1);
}
通过以下方式创建:
PasswordDatabase db = new PasswordDatabase(this);
如果您查看SQLiteOpenHelper的文档,则会指出在调用getReadableDatabase()
或getWriteableDatabase()
之前不会创建数据库。所以,我尝试调用其中一个方法,然后检查数据库是否已创建。