2011-07-23 6 views
0

私は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)"; 

答えて

0

回答:いいえ、あなたが根付いデバイスを必要としない

そうそう、ここは私の文字列を作成することです。

について:adb shell sqlite3ここで何を達成しようとしていますか?それは示されているように意味をなさない。

「許可なし」について:はい、これは正常です。あなたはgalaxyのような実際のデバイス上のアプリケーションに属しているファイルにアクセスすることはできません(エミュレータでは完全に可能ですが)。

第2の質問:明らかにmDatabaseHelpernullであり、getAllRecords()mDatabaseHelper.getReadableDatabase();と電話するとNPEが発生します。 Databaseクラスの別のコンストラクタがありますか?初期化していないものと同じmDatabaseHelper

+0

いい試着ですが、私はsqlite3を呼び出すことで何を達成しようとしていますか?実際に私のデータベースが正常に作成されているかどうかを確認するためにsqliteを使用しようとすると、私はそれを書かなければならなかったと感じました。 投稿したスタックトレースを見た場合、これは当てはまりません。DatabaseHelperは100%ではありません。ご意見をいただきありがとうございます。 – George

1

解決済み!明らかに間違った間違いですが、私が投稿したテキストからは絶対に見えません。

私は何らかの理由で、アクティビティのonCreate()ステートメントの前にアダプタをインスタンス化しました。下に渡されたコンテキストがnullではなく、まだ準備ができていないことを意味します。したがって、アダプターもヘルパーもヌル・コンテキストまたはものを受け取っていましたが、事前準備されていないコンテキストを使用した初期の呼び出しでは、未設定のフィールドと詳細なヌル・ポインターが発生します。

私はこの1つをキャッチしようとしていますが、私はアクティビティコードを投稿していないので、それは自分自身以外の視点から事実上不可解でした。申し訳ありません。

関連する問題