Я хотел бы использовать базу данных sqlite для своего приложения для Android. Первый вопрос, нужно ли мне иметь рутованное устройство ?!Если я попробую adb shell sqlite3 на моем Galaxy S, он вернет ошибку «not found».Кроме того, когда я пытаюсь "ls / data /", я получаю ошибку "Нет разрешения".
Второй вопрос, сам NullPointer.
07-23 10:58:17.546: ERROR/AndroidRuntime(12815): Caused by: java.lang.NullPointerException
07-23 10:58:17.546: ERROR/AndroidRuntime(12815): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
07-23 10:58:17.546: ERROR/AndroidRuntime(12815): at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:98)
07-23 10:58:17.546: ERROR/AndroidRuntime(12815): at com.gpachov.priorityqueue.database.Database.getAllRecords(Database.java:24)
07-23 10:58:17.546: ERROR/AndroidRuntime(12815): at com.gpachov.priorityqueue.database.DatabaseAdapter.<init>(DatabaseAdapter.java:21)
07-23 10:58:17.546: ERROR/AndroidRuntime(12815): at com.gpachov.priorityqueue.PriorityQueueActivity.<init>(PriorityQueueActivity.java:20)
Это происходит в самом контексте при попыткедля доступа к базе данных.
Вот мой код.
public class DatabaseHelper extends SQLiteOpenHelper {
private final static String DATABASE_NAME="queue";
private final static int DATABASE_VERSION = 1;
public DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(ItemTable.CREATE_STRING);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//nothing for now
}
}
И более важный класс, вызывающий нулевой указатель:
public class Database {
private DatabaseHelper mDatabaseHelper;
public Database(Context context) {
mDatabaseHelper = new DatabaseHelper(context);
}
List<Item> getAllRecords() {
final SQLiteDatabase database = mDatabaseHelper.getReadableDatabase();
................. Он дует с NPE в первой строке getAllRecords()
.
О да, и вот моя строка создания:
public static final String CREATE_STRING = "create table items (id integer primary key autoincrement, "+ "title text not null, description text not null, priority integer not null)";