私はAndroidアプリケーションのためにsqliteデータベースを使用したいと思います。まず、根っからのデバイスが必要ですか?私はギャラクシーSでadbシェルsqlite3しようとすると、 "見つかりません"エラーを返します。また、 "ls/data /"にしようとすると "No permission"というエラーが出ます。AndroidのSQLiteとNullPointer
2番目の質問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
}
}
そして、もっと重要なNULLポインタ原因クラス:
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)";
いい試着ですが、私はsqlite3を呼び出すことで何を達成しようとしていますか?実際に私のデータベースが正常に作成されているかどうかを確認するためにsqliteを使用しようとすると、私はそれを書かなければならなかったと感じました。 投稿したスタックトレースを見た場合、これは当てはまりません。DatabaseHelperは100%ではありません。ご意見をいただきありがとうございます。 – George